前言
眾所周知ES5之前javascript語言只有函數作用域和全局作用域,使用var來聲明變量,var聲明的變量還存在變量提升使人困惑不已。我們先來復習一下ES5的var聲明,再對比學習let和const 。
var
var聲明之函數作用域和全局作用域。
來段代碼體會一下:
function getName() { if (1 + 1 === 2) { var name = 'xixi'; } console.log(name);}getName();//xixi在c或java語言中name本應該只在if塊中使用的,但是在if的外面也可以訪問到,這個就是 js沒有塊級作用域的一種體現。這個弊端在for循環中體現的十分明顯:
for (var i = 0; i < 10; i ++) { // ...}console.log(i);// 10 var i的本意是聲明個臨時變量i,用來遍歷數組等,本不應該在for循環的外部訪問到,但現在卻可以被訪問到你說鬧不鬧心?好一點的程序員會用立即執行函數來模擬塊級作用域,原來的我會注意一下盡量不使用相同的變量名
注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
|
新聞熱點
疑難解答