Javascript &引用;强制null或undefined成为全局对象的情况;

Javascript &引用;强制null或undefined成为全局对象的情况;,javascript,strict,Javascript,Strict,约翰·雷西格: 最后,一个长期存在(而且非常恼人)的bug得到了解决:null或undefined被强制成为全局对象的情况。严格模式现在阻止这种情况发生,并引发异常 (函数(){…})。调用(null);//例外情况 他指的是什么bug?基本上,您使用的是Function.prototype中的call()方法,默认情况下,该方法将scope作为第一个参数。如果执行范围为未定义或空,则默认为全局对象。在某些情况下,对立即调用的函数表达式使用call方法(上面的代码非常少见)不会将全局对象用作默认

约翰·雷西格:

最后,一个长期存在(而且非常恼人)的bug得到了解决:null或undefined被强制成为全局对象的情况。严格模式现在阻止这种情况发生,并引发异常

(函数(){…})。调用(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