在IE8-(IE6-IE8)中JScript有很多错误
这些会导致:
函数表达式的标示符泄露到外部作用域
1
2 |
var
f = function
g(){}; typeof
g; // "function" |
把函数表达式同时当作函数声明和函数表达式
1
2 |
typeof
g; // "function" var
f = function
g(){}; |
以上两个我觉得问题都在JScript把函数表达式当做函数声明。 因为function g(){}被当做函数声明,在顶部已被解析了,自然而然会被泄露,自然无所谓声明的地方。
命名函数表达式会创建两个截然不同的函数对象
1
2
3
4 |
var
f = function
g(){}; f === g; // false f.expando = ‘foo‘ ; g.expando; // undefined |
感谢@汤姆大叔 的《深入理解JavaScript系列》指导我学习!
原文:http://www.cnblogs.com/ltchronus/p/3533370.html