IE8`window.fn!== fn`

Mar*_*ahn 11 javascript internet-explorer internet-explorer-8

有人可以解释一下吗?IE8

( function(){
    window.foo = function foo(){};
    console.log( window.foo === foo ); // false
}() );
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 13

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

更多信息:

var f = function g(){};
f === g; // false
Run Code Online (Sandbox Code Playgroud)

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

  • 再一次,javascript是一团糟. (2认同)