anyDefinedFunction.caller为null,但为什么Math.anyMathFunction.caller抛出错误?

时间:2015-10-02 20:02:40

标签: javascript

访问任何caller函数的Math属性时(sin,cos,..)会导致以下错误。

  

未捕获的TypeError:'来电者'和'论证'是限制功能   属性,在此上下文中无法访问。

但是,调用与window.alert等其他函数相同的属性或任何用户定义的函数都会返回null

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

这种行为背后的原因是什么?这种限制的目的是什么?

1 个答案:

答案 0 :(得分: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 。 您可以在下面的代码中看到相同的内容:

Dog.self