JS聲明提前

直接上一段代碼解釋下聲明提前

alert(a)? ? ? ? ? // 彈出函數(shù)a

a();? ? ? ? ? ? ? // 彈出10, 因為函數(shù)定義全部都提升上去

var a=3;

function a(){

? ? alert(10)

}?

alert(a)? ? ? ? ? // 彈出的是3

a=6;? ? ? ? ? ? ?

a();? ? ? ? ? ? ? //報錯,提示a不是函數(shù)

聲明提前:在js中,用var聲明的變量或者函數(shù),都會被提升到作用域最前面,但只是聲明提前,賦值并不會提前。

牢記這一句話,然后我們整理下代碼:

// var變量和函數(shù)聲明提前,順序和代碼中的順序一致,但是賦值不提前。

var a;

function a(){

? ? alert(10)

}

alert(a)? ? ? ? ? // 彈出函數(shù)a,因為函數(shù)a將a覆蓋

a();? ? ? ? ? ? ? // 彈出10

a=3;?

alert(a)? ? ? ? ? // 彈出3

a=6;? ? ? ? ? ? ?

a();? ? ? ? ? ? ? //報錯,提示a不是函數(shù)

修改之后的代碼就是js聲明提前的實際執(zhí)行順序。

用const、let聲明的變量,不會被提到作用域最前面,所以提前用了就會報錯

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

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

  • 第一章: JS簡介 從當初簡單的語言,變成了現(xiàn)在能夠處理復雜計算和交互,擁有閉包、匿名函數(shù), 甚至元編程等...
    LaBaby_閱讀 1,763評論 0 6
  • 概要 64學時 3.5學分 章節(jié)安排 電子商務網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,874評論 0 3
  • 深入理解JavaScript系列文章,包括了原創(chuàng),翻譯,轉(zhuǎn)載,整理等各類型文章,如果對你有用,請推薦支持一把,給大...
    DaveWeiYong閱讀 711評論 0 1
  • 第一章 前端三大語言:HTML(專門編寫網(wǎng)頁內(nèi)容)、CSS(編寫網(wǎng)頁樣式)、JS(專門編寫網(wǎng)頁交互行為) 能簡寫盡...
    fastwe閱讀 1,201評論 0 0
  • 繼承 一、混入式繼承 二、原型繼承 利用原型中的成員可以被和其相關的對象共享這一特性,可以實現(xiàn)繼承,這種實現(xiàn)繼承的...
    magic_pill閱讀 1,128評論 0 3

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