复习JavaScript 3
揭秘命名函数表达式 复习(2)
JScript的BUG
在IE8-(IE6-IE8)中JScript有很多错误
这些会导致:
-
函数表达式的标示符泄露到外部作用域
12var
f =
function
g(){};
typeof
g;
// "function"
-
把函数表达式同时当作函数声明和函数表达式
12typeof
g;
// "function"
var
f =
function
g(){};
以上两个我觉得问题都在JScript把函数表达式当做函数声明。 因为function g(){}被当做函数声明,在顶部已被解析了,自然而然会被泄露,自然无所谓声明的地方。
-
命名函数表达式会创建两个截然不同的函数对象
1234var
f =
function
g(){};
f === g;
// false
f.expando =
‘foo‘
;
g.expando;
// undefined
感谢@汤姆大叔 的《深入理解JavaScript系列》指导我学习!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。