Ошибка AJAX: TypeError: «аргументы», «вызываемый» и «вызывающий» недоступны в этом контексте
В этой статье мы увидим «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(); |
Выход: