第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

理解這段代碼的方法。它是如何工作的?

理解這段代碼的方法。它是如何工作的?

一只萌萌小番薯 2021-06-07 14:15:14
我正在探索 javascript 中的范圍,并開始知道這個問題。我不明白這個問題是如何運作的。function checkType() {  return foo;  foo = 10;  function foo() {};  var foo = 11;};console.log(typeof checkType())我的問題是 javascript 編譯器如何決定返回函數(shù)而不是變量。歡迎任何參考或解釋。
查看完整描述

3 回答

?
三國紛爭

TA貢獻(xiàn)1804條經(jīng)驗 獲得超7個贊

首先所有的函數(shù)聲明都被提升到一個范圍內(nèi)。因此,首先代碼將變量移動foo到作用域的頂部并將其值初始化為函數(shù)。


變量的第二個聲明沒有被提升,因為函數(shù)聲明已經(jīng)被提升。所以代碼是一樣的


function checkType() {

  var foo = function(){}

  return foo;

  foo = 10;


  foo = 11; 

};


查看完整回答
反對 回復(fù) 2021-06-11
?
www說

TA貢獻(xiàn)1775條經(jīng)驗 獲得超8個贊

當(dāng)我們運行代碼時,它有兩個階段,首先是creation phase在這個階段語法解析器將讀取代碼并提升函數(shù)和變量,第二階段是execution phase將值分配給提升的變量,


這里需要注意的一點是函數(shù)在創(chuàng)建階段存儲在內(nèi)存中,因為它是變量被提升但值未初始化的地方(將在執(zhí)行階段分配)


提升后編譯器會這樣對待你的代碼


function checkType() {

  var foo = function() {}; //hoisted function

  return foo;

  foo = 10;

  foo = 11;

};


console.log(typeof checkType(), '\nRturned value from function  --->', checkType())

如果您將函數(shù)定義為變量,則它只會被提升但不會用值進(jìn)行初始化,您可以看到以下示例


function checkType() {

  return foo;

  foo = 10;


  var foo = function foo() {};

  var foo = 11;

};


console.log(typeof checkType(), '\nRturned value from function  --->', checkType())


查看完整回答
反對 回復(fù) 2021-06-11
  • 3 回答
  • 0 關(guān)注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號