ES6 let和const詳解及使用細節
ES6之前javascript只有全域性作用域和函式作用域,所以經常會遇到變數提升了或者使用閉包的時候出錯的問題。
所有a[i]都會輸出10;
var arr=[]; for (var i=0;i<10;i++){ arr[i]=function(){ console.log(i); }; }
變數提升,輸出undefined。
function showName(){ console.log(name); var name = "Jhon"; }
ES6引入了let和const關鍵字,從而使javascript像其他語言一樣擁有了塊級作用域。沒有其他語言程式設計經驗的或者由於長期使用ES5編碼的習慣問題,有一些細節的地方仍然需要注意一下。
首先說一下let:
let讓變數具有了塊級作用域,像這樣就不會共享變數i,而是輸出0-9的數字。
let arr=[]; for (let i=0;i<10;i++){ arr[i]=function(){ console.log(i); }; }
使用let需要注意:
- 使用let申明的變數具有塊級作用域,即變數宣告前後的{}。
- let宣告的全域性變數不是全域性物件的屬性,不可通過window.變數名訪問,理論上存在於一個頂級的js程式碼塊中。
- 形如for ( let i=0....)的迴圈再每次迭代時都為i建立新的繫結。所以迴圈中如果有一個閉包,那麼閉包將捕獲一個迴圈值的不同副本,不會共享一個變數。
- let宣告的變數直到控制流到達該變數定義的位置時才被裝載,所以到達之前使用會觸發錯誤,即不能先使用後宣告。
- 用let重複宣告一個變數會發生語法錯誤。
const常量:const和和let類似,只是const宣告的變數只可以在宣告時賦值,不可隨意修改,不然會報錯const MAX_SIZE = 300; //正確 MAX_SIZE = 200; //錯誤
其他注意事項和let一樣
相關文章
- ES6 let和const命令
- ES6語法——let和const
- es6學習之let和const
- ES6入門——let和const命令
- ES6 - let與const,解構賦值賦值
- ES6系列——let和const深入理解
- ES6中let 和 const 的新特性
- ES6中let和var和const的區別
- ES6學習筆記一(let和const)筆記
- ES6學習筆記(一)————————————–let和const筆記
- ES6學習let&const
- [ES6深度解析]13:let const
- ES5 和 ES6:let const var 區別
- 每天學習一點ES6(二)let 和 const
- ES6系列入門學習記錄:let和const
- es6 let const與var 的區別
- ES6中var,let,const的區別
- let & const —— ES6基礎總結(二)
- ES6中var/let/const的區別
- es6新特性--let,const關鍵字
- 詳解 let 和 var
- [譯] 在JavaScript中何時使用var、let及constJavaScript
- 理解let並 const在JavaScript ES6中(1)JavaScript
- 理解let並 const在JavaScript ES6中(2)JavaScript
- 理解let並 const在JavaScript ES6中(4)JavaScript
- ES6標準入門之---let與const
- ES6 let 與 const的應用介紹
- 前端 let、const和var你真的瞭解麼?前端
- JavaScript 高階—— ES6新增語法 const(let const var區別)JavaScript
- ES6語法學習筆記之let const 解構賦值筆記賦值
- ES6基礎知識——let、const關鍵字和變數的解構賦值變數賦值
- 深入理解ES6之var,let,const區別
- 【ES6】var、let、const三者的區別
- var,let和const深入解析(一)
- var、let和const的區別
- var和let/const的區別
- ES6新特性總結之let和const--史上最全最簡潔
- ES6 --- 新的變數宣告方式 let 與 const 解析變數