Javascript &引用;强制null或undefined成为全局对象的情况;
约翰·雷西格: 最后,一个长期存在(而且非常恼人)的bug得到了解决:null或undefined被强制成为全局对象的情况。严格模式现在阻止这种情况发生,并引发异常Javascript &引用;强制null或undefined成为全局对象的情况;,javascript,strict,Javascript,Strict,约翰·雷西格: 最后,一个长期存在(而且非常恼人)的bug得到了解决:null或undefined被强制成为全局对象的情况。严格模式现在阻止这种情况发生,并引发异常 (函数(){…})。调用(null);//例外情况 他指的是什么bug?基本上,您使用的是Function.prototype中的call()方法,默认情况下,该方法将scope作为第一个参数。如果执行范围为未定义或空,则默认为全局对象。在某些情况下,对立即调用的函数表达式使用call方法(上面的代码非常少见)不会将全局对象用作默认
(函数(){…})。调用(null);//例外情况
他指的是什么bug?基本上,您使用的是
Function.prototype
中的call()
方法,默认情况下,该方法将scope作为第一个参数。如果执行范围为未定义
或空
,则默认为全局对象。在某些情况下,对立即调用的函数表达式使用call
方法(上面的代码非常少见)不会将全局对象用作默认的回退执行范围
如果在严格模式代码中对其求值,则不会将此
值强制为对象。此
值的null
或未定义
不会转换为全局对象,基本值也不会转换为包装对象。通过函数调用传递的此值(包括使用function.prototype.apply
和function.prototype.call
)进行的调用)不会强制将传递的此值传递给对象(ECMA语言规范的10.4.3、11.1.1、15.3.4.3、15.3.4.4条款) JR的意思是(function(){returnthis;})。我猜调用(null)==window
。