Ошибка AJAX: TypeError: «аргументы», «вызываемый» и «вызывающий» недоступны в этом контексте

Опубликовано: 23 Февраля, 2023

В этой статье мы увидим «TypeError: ‘аргументы’, ‘вызываемый’, ‘вызывающий’ не могут быть доступны в этом контексте” . Эта ошибка отображается по-разному в разных браузерах. Например, ошибка, упомянутая выше, отображается сафари , но, если вы находитесь в браузере V8 или firefox , ошибка будет «вызывающий», «вызываемый» и «аргументы» свойства не могут быть доступны на строгом функции режима или объекты аргументов для вызовов к ним».

Функции свойств callee и caller — это функции, которые помогают получить доступ к родительским функциям.

Функции свойства «аргументы» предоставляют доступ к аргументам в самом последнем вызове функций в виде массива.

Строгий режим — это функция, предоставляемая javascript, для строгого рабочего контекста по отношению к коду. Например, если мы не объявляем переменную, а только присваиваем значение 'a = 10' , то javascript проигнорирует это, но если вы находитесь в строгом режиме , то вы получите ошибку в этой строке кода.

Посмотрев на их определения, мы увидим, что эти функции представляют угрозу для утечки данных и конфиденциальности их кода. Например, если кто-то знает, как получить доступ к родительским функциям в вашем коде, это может привести ко многим киберугрозам . Из-за этого «аргументы», «вызывающий» и «вызываемый» устарели в большинстве браузеров. Когда вы используете строгий режим, вы не можете использовать «аргументы», «вызывающий» и «вызываемый» из-за угрозы утечки данных. На самом деле с запросом AJAX проблем нет.

Пример: этот код показывает ошибку при вызове «вызывающего абонента» в строгом режиме.

Javascript




"use strict";
  
function b(){
    console.log(b.caller)
}
  
b();

Выход:

Чтобы решить эту ошибку, мы должны просто удалить режим «использовать строгий» из кода. Поскольку «вызывающий», «вызываемый» и «аргументы» по-прежнему доступны в некоторых браузерах. Если вы используете ES6 , то режим «использовать строгий» встроен в каждый модуль, и вы не можете удалить режим «использовать строгий». В таких случаях избегайте использования в коде функций свойств «вызывающий», «вызываемый» и «аргументы».

Пример: приведенный выше код переписан без использования «строгого использования», и теперь ошибка не отображается. Функция b() возвращает null , так как b.caller не имеет родительской функции.

Javascript




function b(){
    console.log(b.caller)
}
  
b();

Выход: