es6新特性--let,const關(guān)鍵字

Error:let definitions are not supported by current javascript version

  • 在webstrom內(nèi),寫簡單的js文件,想用let定義變量,但是出現(xiàn)了這個問題,按字面理解,es版本對不上。

    2017-10-03 23-58-54屏幕截圖.png

    ?

  • 打開 file-> settings -> languages & frameworks -> javascripts 如下:

    ?

    2017-10-04 00-03-59屏幕截圖.png

    ?

  • 將javascript language version 修改為ECMAScript6,然后點擊apply即可,此時會發(fā)現(xiàn)錯誤消失了。

關(guān)于let關(guān)鍵字

  • 暑期寫了2個月的angular2,最近重新學js,在看ES6的特性,發(fā)現(xiàn)ES6出了let關(guān)鍵字,也就是說es6之后,js也能定義塊級作用域的變量了。(在es6之前,定義變量用var,變量在函數(shù)作用域內(nèi)生效,但是沒有塊級作用域,var所定義的變量還是會出現(xiàn)混淆的情況)。感覺要養(yǎng)成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定義的變量在函數(shù)作用域內(nèi)生效,而let定義的變量在指定的塊(block)內(nèi)生效。因此可以看出,多用let可以避免很多es6之前的所謂找不到出錯的變量在哪個位置的bug。

續(xù)更(2017/10/04)

早上醒來得到了幾個評論,大概做下總結(jié):

  • 這個問題其實只說對了一半。
  • let關(guān)鍵字其實是為javascript增加了塊級作用域,本質(zhì)上還是個變量,依舊能賦值改變,只要能賦值改變,改變了值就容易引入bug。
  • es6為這個問題引入了const關(guān)鍵字。

關(guān)于const關(guān)鍵字

  • const聲明的變量不得改變值,這意味著,const一旦聲明變量,就必須立即初始化,不能留到以后賦值。const聲明一個只讀的常量。一旦聲明,常量的值就不能改變。而const與let一樣,都只是在塊級作用域內(nèi)有效。
  • 綜上所述:能用const就不用let,如果需要一個變化的值,可以直接再定義一個const常量,這樣能從本質(zhì)上避免很多關(guān)于變量定位的坑。當然,如果用let定義能讓你節(jié)省下很多時間,可以考慮用let。
  • 參考資料:阮一峰-ECMAScript 6 入門
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容