请问 js 非严格模式下报错 f is not a function

https://img1.mukewang.com/5c3d9c980001214b03350243.jpg

请问为什么不加严格模式会报
TypeError: f is not a function

杨魅力
浏览 1803回答 1
1回答

富国沪深

在非严格模式下, 你的代码等价于var ff = function() {...}(function() {  var f  if (false) {    f = function() {...}  }  f()} ())自执行函数中, f的定义被提前, 离开了if代码块, 但赋值仍在if中, 所以到执行时f是undefined在严格模式下, 你的代码等价于let ff = function() {...}(function() {  if (false) {    let f    f = function() {...}  }  f()} ())内部f的定义也是在if中的, 所以f用的是外面的f
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript