亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript 有名/匿名函數聲明的競爭

JavaScript 有名/匿名函數聲明的競爭

慕俠2389804 2018-08-20 11:10:37
看到 阮一峰老師的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 才對嘛。
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

 var f;  function f(){    console.log('2');
  }      
  f= function(){    console.log(1);
  }
  f()

這樣寫應該就比較好解釋為什么是1了,變量和函數聲明都提升了。


查看完整回答
反對 回復 2018-09-19
  • 1 回答
  • 0 關注
  • 531 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號