看到 阮一峰老师的JS书
有个例子没看懂:
1 var f = function() {2 console.log ('1');3 }4 5 function f() {6 console.log('2');7 }8 9 f() output: 1
chrome测试后的确输出了 1
JS解释器在扫描这个作用域时,提升了哪些声明?如何提升的?
Line 1 var f
这个变量声明肯定是提升了
Line 1 function()
这个匿名函数的声明会提升吗?
Line 5 function f()
这个函数声明是不是类似于 var f = function() {...} ?
如果是,第二次声明变量 f 应该是被忽略了
所以会变成 f = function() {...} 咯?
那为什么会忽略第二次函数声明对变量的赋值呢?
按照这篇 博客
“对于函数声明,Javascript 依然会进行变量声明提升,而且会给其赋一个初始的值。... 这个初始值其实是最后一次声明的那个函数。”
岂不是应该忽略第一个声明,输出 2 才对嘛。
天涯尽头无女友
相关分类