ES6學習(var,let,const區別)

2021-09-28 18:50:38 字數 1608 閱讀 3443

本人寫這個專題的部落格是為了總結一下自己學習,使用還有刷題時學到的es6知識點,並做以歸納。

三個屬性都可以宣告變數。

var  重新賦值,重新定義變數,可以重複宣告,但是後者的值會覆蓋前者的值。

作用域:function(如果在全域性中,作用域為windows)。var宣告的變數會暴露在全域性。

let         作用域:block,塊級作用域,即{}內。

宣告的變數只在其block中顯示,不暴露在全域性。不能重複宣告變數。

const      與let一樣,作用域都是block,而且不暴露在全域性。與let一樣不能重新賦值。但是引用的型別值可以更新,即可以在物件中進行更改:

使用object.freeze()方法可以強制不允許更改:

window變數舉例:

這樣會直接更改window中的name屬性。使用立即執行函式:

然而這樣不會有利於**的可讀性,而且這樣也沒有什麼意義。於是採用let和const的 塊級作用域這一特點實現:

{}中,即表示塊級作用域

複習一下之前學習閉包時的乙個題。for迴圈

for(var i=0;i<10;i++)
輸出自然是0~10之內的數字。然而在for迴圈中如果有其他的操作:

for(var i=0;i<10;i++)`)

},1000)

}

第乙個輸出就是0~10,然而第二個輸出:i : 10。在之前的閉包中有寫過這個問題:mr.j--閉包學習

對於上面的問題,如果想輸出對應輸出的索引值,只需要將var更改let即可。(最近在code wars中刷題已經逐漸減少了var的使用頻率而改用let關鍵字)

var    具有變數提公升,(mr.j -- 變數提公升)而對於let和const中不能進行變數提公升。

對於這個問題的解決:

ES6學習筆記

let 塊變數 作用域為塊 const 常亮 作用域為當前塊 解構賦值 例 var x,y 1,2 字元擴充套件 at includes startswith endswith repeat codepointat 模板字串 例 正則的uiy 數值擴充套件 number.isfinite numbe...

ES6初步學習

在es5裡只有全域性作用域和函式作用域的區分,會造成一些定義的內容被覆蓋掉 就像for迴圈定義事件這種情況會出現var a 2 if a 1 console.log name es6 let const let 起到了乙個塊級作用域的作用,再出了所在 後在使用let所定義的東西就會失效 let na...

ES6學習筆記

常用語法 1 let 與var類似,不同的是let定義的變數有塊級作用域,比如 var a 1 while true alert a 2 用let let a 1 while true alert a 12 const用來定義變數,但是定義之後的值不能再次更改了。乙個實際的用途是用來定義引入的模組,...