2015-10-02 3 views
0

При доступе к объекту caller любых функций Math (sin, cos, ..) возникает следующая ошибка.anyDefinedFunction.caller имеет значение null, но почему Math.anyMathFunction.caller выбрасывает ошибку?

Uncaught TypeError: 'caller' and 'arguments' are restricted function properties and cannot be accessed in this context.

Но, ссылаясь на то же свойство над другими функциями, как window.alert или любые пользовательские функции возвращает null.

Math.sin.caller // ERROR 
window.alert.caller // null 

В чем причина такого поведения? Какова цель этого ограничения?

ответ

0

Math.sin - это строгая функция, а window.alert - нет. Вы можете увидеть то же самое в коде ниже:

function f() { 
    'use strict'; 
    alert('hi'); 
} 

function g() { 
    alert('hi'); 
} 

console.log(g.caller) // null 
console.log(f.caller) // null 
+0

функция Неа, Math.sin использует строгий режим в его определении. Вот почему ошибка поднимается. Но почему другие функции, такие как window.alert, не определены в строгом режиме? –

+0

исправлено, спасибо. не нашел хорошего ответа на ваш вопрос, интересно! –

Смежные вопросы