看到 阮一峰老師的JS書有個例子沒看懂:1 var f = function() {2 console.log ('1');3 }4 5 function f() {6 console.log('2');7 }8 9 f()
output: 1chrome測試后的確輸出了 1JS解釋器在掃描這個作用域時,提升了哪些聲明?如何提升的?Line 1 var f 這個變量聲明肯定是提升了Line 1 function() 這個匿名函數的聲明會提升嗎?Line 5 function f()這個函數聲明是不是類似于 var f = function() {...} ?如果是,第二次聲明變量 f 應該是被忽略了所以會變成 f = function() {...} 咯?那為什么會忽略第二次函數聲明對變量的賦值呢?按照這篇 博客“對于函數聲明,Javascript 依然會進行變量聲明提升,而且會給其賦一個初始的值。... 這個初始值其實是最后一次聲明的那個函數?!必M不是應該忽略第一個聲明,輸出 2 才對嘛。
JavaScript 有名/匿名函數聲明的競爭
慕俠2389804
2018-08-20 11:10:37