请问为什么不加严格模式会报TypeError: f is not a function
1 回答
富国沪深
TA贡献1790条经验 获得超9个赞
在非严格模式下, 你的代码等价于
var f
f = function() {...}
(function() {
var f
if (false) {
f = function() {...}
}
f()
} ())
自执行函数中, f的定义被提前, 离开了if代码块, 但赋值仍在if中, 所以到执行时f是undefined
在严格模式下, 你的代码等价于
let f
f = function() {...}
(function() {
if (false) {
let f
f = function() {...}
}
f()
} ())
内部f的定义也是在if中的, 所以f用的是外面的f
添加回答
举报
0/150
提交
取消