什么是變量提升
JavaScript 中,變量的聲明都將被提升到函數(shù)的最頂部冒版。也就是說變量可以先使用再聲明绘雁。簡單的說將var的變量聲明提到函數(shù)最上面票彪,不能將變量的值和變量的引用提升到函數(shù)最上面。如下圖所示:
圖1函數(shù)輸出結果為undefined和1說明a在第一個console的時候就已經(jīng)被定義了外莲,但是沒有給a賦值猪半。不然的話會報錯。圖1的等價代碼如圖2
下面也是關于變量提升的例子:
圖4是圖3的等加代碼偷线。圖一的代碼不容易理解磨确,建議在函數(shù)開始時對所有局域變量進行定義,不建議在ES6中使用var定義變量使用變量提升声邦。
什么是函數(shù)提升
由圖5可知函數(shù)也有提升這個概念乏奥,這時候應該有一個疑問,在函數(shù)內是定義變量在最前面還是函數(shù)在最前面亥曹?函數(shù)再最前面邓了。當變量名與函數(shù)名重復時,函數(shù)的優(yōu)先級更高媳瞪。如圖6