JavaScript中變量和函數(shù)的聲明提前

JavaScript這個(gè)弱類型語(yǔ)言現(xiàn)在越來(lái)越火,我也很喜歡這個(gè)語(yǔ)言,因?yàn)槿踝藨B(tài),反而更靈活,現(xiàn)在已經(jīng)成為全棧型開發(fā)語(yǔ)言。
在學(xué)習(xí)JavaScript時(shí),有很多細(xì)節(jié)性東西,也就是坑,一不留意就會(huì)掉下去,其中一個(gè)就是聲明提前

1. 聲明提前的順序優(yōu)先級(jí)

  1. 函數(shù)參數(shù)
  2. var聲明的變量
  3. 函數(shù)定義

也就是說(shuō):一個(gè)作用域中有多種聲明,那么就按照上面的優(yōu)先級(jí)來(lái)進(jìn)行提前,先把所有的函數(shù)參數(shù)進(jìn)行提前,完了再提前var變量,然后才是函數(shù)聲明。在這里,把函數(shù)參數(shù)和var聲明的變量統(tǒng)稱為屬性,大家也許會(huì)認(rèn)為不管誰(shuí)先吧,知道提前就行,在正常開發(fā)中確實(shí)是不太需要關(guān)注這個(gè)。但如果面試時(shí),可能就需要明白這個(gè)的重要性了。因?yàn)槊嬖嚂r(shí)遇到的題是,在一個(gè)作用域中,這幾個(gè)聲明都有,但是他們的名字一樣,哈哈,無(wú)語(yǔ)了吧。

下面馬上就介紹這種情況的規(guī)則

2. 名稱相同時(shí),保留優(yōu)先級(jí)

  1. 如果屬性相同,則以第一個(gè)為準(zhǔn)
  2. 如果有與函數(shù)名同名的變量,則會(huì)被此函數(shù)覆蓋
  3. JavaScript作用域會(huì)先在自己的AO上找,找不到就到父函數(shù)的AO上找,再找不到再找上一層的AO,直到找到window.

trycatch

trycatch是同步的,只能獲取同步的異常,若果try代碼塊中是異步操作,異步的回調(diào)函數(shù)或事件中的錯(cuò)誤是獲取不到的,如果需要獲取回調(diào)函數(shù)的錯(cuò)誤,就得在回調(diào)函數(shù)中再寫一個(gè)trycatch

參考鏈接:http://www.itdecent.cn/p/43bf4f2e0d57#

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容