首先是let是什麼:let允許你宣告乙個作用域被限制在塊級中的變數、語句或者表示式。與var關鍵字不同的是,它宣告的變數只能是全域性或者整個函式塊的。
我來舉乙個例子
通過上述**可以看出在if語句**塊中同時用var和let宣告了變數,但是let宣告的變數在**塊的外面列印是報錯的,而var宣告的變數是正常的。
與var相比 let更加嚴謹一些 var類似以下情況會出現一些問題
var a = 1;
function
foo(argument)
console.log("a:",a);//a: 1
foo();//a: 2
兩個a的值不一樣的情況。
var 在迴圈中宣告之後 迴圈外仍然存在,而let則不會出現這種情況,當離開作用域後let將會銷毀變數。
還有一點關於變數提公升的問題
可以看見輸出的是未定義而不是報錯,說明變數是被宣告過的但是沒有賦值,以上的if**塊是不會被執行的但是變數被宣告了的。這就是變數提公升。會將變數宣告提到**的最前面宣告。
let繫結不受變數提公升的約束,這意味著let宣告不會被提公升到當前執行上下文的頂部。在塊中的變數初始化之前,引用它將會導致 referenceerror(而使用 var 宣告變數則恰恰相反,該變數的值是 undefined )
待補充。。。
常用ES6基礎語法總結
用自己易於理解的語言總結的,歡迎各位大佬指點 1 用來宣告塊級作用域 let宣告的變數只在其塊級作用域內有效,而var通常在函式作用域或全域性作用域內有效塊級作用域 指用花括號包裹起來形成的語句塊,如if for while迴圈語句等。if true console.log a a is not d...
ES6語法 let和const區別
var變數穿透問題 lang en charset utf 8 name viewport content width device width,initial scale 1.0 documenttitle head let和const 解決 1 var變數穿透的問題 2 變數修改的問題 for ...
ES6語法總結
1 物件的寫法 es5中物件 es6中物件 注意這種寫法的屬性名稱和值變數是同乙個名稱才可以簡寫,否則要想es5那樣的寫法,例如 2 在物件中的方法的寫法 es5中物件 substrict function es6中物件 substrict 3 物件的匯出寫法 es5兩種形式 1 module.ex...