繁体   English   中英

IE8`window.fn!== fn`

[英]IE8 `window.fn !== fn`

有人可以解释一下吗? IE8

( function(){
    window.foo = function foo(){};
    console.log( window.foo === foo ); // false
}() );

由于IE错误,命名函数表达式创建一个单独的本地foo变量,该变量具有该函数的单独副本。

更多信息

 var f = function g(){}; f === g; // false 

这是事情变得有趣的地方。 或者说 - 完全坚果。 在这里,我们看到了必须处理两个不同对象的危险 - 增加其中一个显然不会修改另一个; 如果您决定使用缓存机制并将某些内容存储在f的属性中,然后尝试将其作为g的属性进行访问,并认为它与您正在使用的对象相同,那么这可能会非常麻烦。

如果您有兴趣纠正这个问题,这将有效。

( function(){
    var f = function foo(){};
    window.foo = f;
    alert( window.foo === f ); // false
}() );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM