ES6簡介之let和const命令解說

  1、var申明變量java

  學習過JavaScript的同窗都應該知道,ES5中申明變量使用var,ES5中的var能夠說是無所不能的,全部類型的變量都是由var來申明,但每每不少使用者不知道var申明的變量存在變量提高,即變量能夠在申明以前使用,有時不注意申明的做用域會致使全局變量污染,特別要注意這種隱形的全局變量申明,直接沒有val,好比a = 3,像這個變量a就成了全局變量,若是此時你在用var申明一個a變量,在使用過程當中隱形變量a 的值就會被覆蓋,這就是容易致使全局變量污染的緣由之一,還以一個你們可能會產生誤解的地方就是,所謂全局變量就是在javaScript代碼中function最前邊的var申明是全局變量,後面的就不是,其實var申明的變量只要不在function中就所有是全局變量,這點必定要注意。特別要說明的一點就是var申明的變量存在變量提高,咱們先來看下面一段簡單的代碼ide

  
1 console.log(a);
2 var a = 4;
3 會輸出underfined,不會報錯referenceError
var申明變量提高舉例說明

  2、let申明變量函數

  今天要給你們解說的let申明變量使用跟var申明同樣滴,只不過let申明的變量是隻在代碼塊中有效,即{}中有效,看下面代碼學習

  
1 {
2   let a = 10;
3   var b = 3;    
4 }
5 console.log(a)
6 //ReferenceError:a is not defined
7 console.log(b)
8 // 3
let 變量申明

  從這段代碼的運行結果能夠明顯的看出,let申明的變量出了代碼塊就沒法訪問,這樣就必定程度上避免了全局變量污染,並且let申明的變量不存在變量提高的現象,也就是說使用let申明變量只能先聲明在使用,不然就會報錯,如今說的塊級做用域能夠稱做爲暫時性死區(TDZ),在這個暫時性死區中申明的變量外邊沒法訪問。還有一點就是一個變量不容許let和var重複申明。在這裏順道給你們說一下塊級做用域,ES5中只有全局做用域和函數做用域,沒有塊級做用域這致使不少場景不合理:spa

  第一種場景:內層變量可能會覆蓋外層變量;code

  第二種場景:用來計數的循環變量泄露爲全局變量;blog

let實際上就是爲JavaScript新增了塊級做用域,並且塊級做用域能夠嵌套。有興趣的同窗能夠去看一看ES6中的do表達式,獲取代碼塊的返回值。ip

  3、const申明變量作用域

      const申明一個只讀的常量,一旦申明,常量的值就不能改變,也就是說const一旦申明常量,就必須當即初始化,不能留到之後賦值,不然就會報錯。io

 

 

  關於ES6中let和const命令申明變量就說這麼,若有錯誤之處,歡迎你們評論區指正討論,感謝!

相關文章
相關標籤/搜索