es6新特性--let,const關鍵字
Error:let definitions are not supported by current javascript version
-
在webstrom內,寫簡單的js檔案,想用let定義變數,但是出現了這個問題,按字面理解,es版本對不上。
-
開啟 file-> settings -> languages & frameworks -> javascripts 如下:
將javascript language version 修改為ECMAScript6,然後點選apply即可,此時會發現錯誤消失了。
關於let關鍵字
- 暑期寫了2個月的angular2,最近重新學js,在看ES6的特性,發現ES6出了let關鍵字,也就是說es6之後,js也能定義塊級作用域的變數了。(在es6之前,定義變數用var,變數在函式作用域內生效,但是沒有塊級作用域,var所定義的變數還是會出現混淆的情況)。感覺要養成let定義變數的習慣。在下面舉一個簡單的例子:
function test(){
for(var i = 0 ; i <5 ; i ++){}
console.log(i); //i = 5
for(let j = 0 ; j < 5 ; j ++){}
console.log(j); //RefreenceError , j is not defined
}
test();
- 由上面的簡單例子可知,var定義的變數在函式作用域內生效,而let定義的變數在指定的塊(block)內生效。因此可以看出,多用let可以避免很多es6之前的所謂找不到出錯的變數在哪個位置的bug。
續更(2017/10/04)
- 昨天晚上寫完這篇文章,稍微搜尋了下下面的問題,結果找到的資料有點少,於是上某乎問了下這個問題:
- es6出了let關鍵字,是否意味著以後寫js定義變數多用let,這樣就避免那些定位不到的bug?
早上醒來得到了幾個評論,大概做下總結:
- 這個問題其實只說對了一半。
- let關鍵字其實是為javascript增加了塊級作用域,本質上還是個變數,依舊能賦值改變,只要能賦值改變,改變了值就容易引入bug。
- es6為這個問題引入了const關鍵字。
關於const關鍵字
-
const
宣告的變數不得改變值,這意味著,const一旦宣告變數,就必須立即初始化,不能留到以後賦值。const宣告一個只讀的常量。一旦宣告,常量的值就不能改變。而const與let一樣,都只是在塊級作用域內有效。 - 綜上所述:能用const就不用let,如果需要一個變化的值,可以直接再定義一個const常量,這樣能從本質上避免很多關於變數定位的坑。當然,如果用let定義能讓你節省下很多時間,可以考慮用let。
- 參考資料:阮一峰-ECMAScript 6 入門
相關文章
- ES6中let 和 const 的新特性
- ES6基礎知識——let、const關鍵字和變數的解構賦值變數賦值
- ES6新特性總結之let和const--史上最全最簡潔
- const關鍵字
- ES6 let和const命令
- ES6 --- 新的變數宣告方式 let 與 const 解析變數
- ES6語法——let和const
- ES6學習let&const
- [ES6深度解析]13:let const
- 關於es6 let var const 以及Symbol的總結Symbol
- es6學習之let和const
- ES6入門——let和const命令
- c/c++ const關鍵字C++
- es6 let const與var 的區別
- ES6中var,let,const的區別
- ES6系列——let和const深入理解
- let & const —— ES6基礎總結(二)
- ES6 - let與const,解構賦值賦值
- ES6中var/let/const的區別
- C++中的 const 關鍵字C++
- ES6學習筆記一(let和const)筆記
- 理解let並 const在JavaScript ES6中(1)JavaScript
- 理解let並 const在JavaScript ES6中(2)JavaScript
- 理解let並 const在JavaScript ES6中(4)JavaScript
- ES6標準入門之---let與const
- ES6學習筆記(一)————————————–let和const筆記
- ES6 let 與 const的應用介紹
- JavaScript 高階—— ES6新增語法 const(let const var區別)JavaScript
- iOS常用關鍵字static、const、extern、defineiOS
- iOS中的static const extern關鍵字iOS
- ES5 和 ES6:let const var 區別
- ES6中let和var和const的區別
- 每天學習一點ES6(二)let 和 const
- 深入理解ES6之var,let,const區別
- 【ES6】var、let、const三者的區別
- ES6 let和const詳解及使用細節
- ES6學習之關鍵字
- 物聯網學習教程—const關鍵字