1、js引擎在掃瞄****發現變數宣告時,要麼把他們提公升到作用域頂部(遇到var宣告);要麼把他們放到tdz(臨時死區)中(遇到let const宣告),訪問tdz裡面的變數會觸發執行時錯誤,只有執行變數宣告語句後,變數才會從tdz中移出,然後才能正常訪問。
if(1
)
console.
log(
typeof value)
// 'undefined' 此時value不在tdz中if(
1)
2、let,const不能覆蓋全域性變數,只能遮蔽它;var能覆蓋全域性變數
let regexp =
'hi'
console.
log(regexp )
// hi
console.
log(regexp ==
= window.regexp )
// false
vae regexp =
'hi'
console.
log(regexp )
// hi
console.
log(regexp ==
= window.regexp )
// true
ES6新增 let const var的區別
var定義的變數,沒有塊的概念,可以跨塊訪問,不能跨函式訪問。let定義的變數,只能在塊作用域裡訪問,不能跨塊訪問,也不能跨函式訪問。const用來定義常量,使用時必須初始化 即必須賦值 只能在塊作用域裡訪問,而且不能修改。es6的let變數宣告特點 1.擁有塊級作用域 2.沒有變數宣告提公升 3....
ES6的宣告 let,const,var區別
a 報錯 referenceerror a is not definedlet 是在 塊內有效,var 是在全域性範圍內有效 a referenceerror a is not defined b 1let a 1 let a 2 var b 3 var b 4 a identifier a has...
ES6新增 let const var的區別
參考學習 var定義的變數,沒有塊的概念,可以跨塊訪問,不能跨函式訪問。let定義的變數,只能在塊作用域裡訪問,不能跨塊訪問,也不能跨函式訪問。const用來定義常量,使用時必須初始化 即必須賦值 只能在塊作用域裡訪問,而且不能修改。es6的let變數宣告特點 1.擁有塊級作用域 2.沒有變數宣告提...