es6中增加了let關鍵字以定義塊級作用域的變數
1.var可以重複宣告,後面的會覆蓋前面的,let不允許重複宣告,會直接報錯
var a =10;
var a =20;
//20
console.
log(a)
;let b =10;
let b =20;
//identifier 'b' has already been declared
console.
log(b)
;
2.var存在變數提公升,let不存在變數提公升
console.
log(a)
;//undefined
var a =10;
console.
log(b)
;let b =20;
//b is not defined
3.let宣告的變數支援塊級作用域,var宣告的變數不支援塊級作用域
for
(var j =
0; j <
4; j++
) console.
log(
'j is '
+ j)
;//j is 4
for(
let i =
0; i <
4; i++
) console.
log(i)
;//i is not defined
用let宣告的關鍵字只在let關鍵字所在的**塊內有效,外部拿不到
4.var宣告的變數會繫結到window物件上,let不會
var a =10;
var sum =
100;
console.
log(window.a)
;//10
console.
log(window.sum)
;//100
let b =20;
const num =
666;
console.
log(window.b)
;//undefined
console.
log(window.num)
;//undefined
const用於宣告變數,const宣告的值不可改變,且在宣告的同時必須初始化,不初始化會報錯
const a =
100;
const b;
//宣告的時候不初始化會直接報錯
b =200;
//報錯
console.
log(a)
;//100
// console.log(b);
總結
1.var定義的變數會繫結到window上,let和const不會
2.var可以重複宣告變數,let和const若重複宣告會直接報錯
3.const宣告的同時必須初始化,不初始化直接報錯
4.let沒有變數提公升
5.let支援塊級作用域
6.const宣告的變數不可以被修改,但是變數裡面的屬性可以被修改,若想連屬性也不能被修改,需要用object.freeze(obj);凍結變數
var const和let的區別
var和let const區別 1 塊級作用域。2 不存在變數提公升。3 暫時性死區。4 不可重複宣告。5 let const宣告的全域性變數不會掛載頂層物件下面。const命令需要注意兩個注意點 1 const宣告之後必須馬上賦值,否則會報錯。2 const簡單型別一旦宣告就不能再更改,複雜型別 ...
es6中的let和var const的區別
通過var定義的變數,作用域是整個封閉函式,是全域的 通過let定義的變數,作用域是在塊級或是子塊中。console.log fun undefined var fun 2 console.log fun 2 var fun 45 不會報錯 let fun 46 會報錯 script 變數提公升現象...
JS中const var和let區別
今天遇到const定義的變數,查閱了相關資料整理了這篇文章。主要內容是 js中三種定義變數的方式const,var,let的區別。1.const定義的變數不可以修改,而且必須初始化。const b 2 正確 const b 錯誤,必須初始化 console.log 函式外const定義b b 有輸出...