一個(gè)例子,變量提升和函數(shù)提升就是這么簡(jiǎn)單!

為啥要進(jìn)行變量提升和函數(shù)提升?
記住兩句話
2、函數(shù)提升的優(yōu)先級(jí)大于變量提升的優(yōu)先級(jí),即函數(shù)提升在變量提升之上。
console.log(a);var a=1;console.log(a);function a(){console.log(2);}console.log(a);var a=3;console.log(a);function a(){console.log(3);}a();console.log(a);

function a(){alert(3);} //第一步預(yù)解析:將 var a提升 但因?yàn)樽兞棵c函數(shù)名相同,故function a()提升時(shí)將覆蓋var a,又因?yàn)榇嬖趦蓚€(gè)相同名稱 的function函數(shù),后寫(xiě)的將覆蓋先寫(xiě)的,所以最后提升的只有function a(){alert(3);}console.log(a); //因?yàn)楹瘮?shù)提升,所以打印的a為函數(shù)整體a=1; //將1賦值給函數(shù)a,此時(shí)的a為一個(gè)變量,不再是函數(shù)console.log(a); //故打印的為a賦的值console.log(a);a=3; //將a重新賦值3console.log(a); //故打印結(jié)果為3a(); //此時(shí)的a為一個(gè)變量,不再是一個(gè)函數(shù),所以報(bào)錯(cuò),js中一旦出現(xiàn)報(bào)錯(cuò),后面的語(yǔ)句將不再運(yùn)行,所以最后一個(gè)console.log不進(jìn)行打印。console.log(a);

評(píng)論
圖片
表情
