let和var區別
var出了塊級區域有效
let出了塊級無效
var聲明均視為作用域頂部聲明 因為var具備變量提升能力
let聲明不具備變量提升能力,離開作用域后就會馬上失效,適合局部變量容易掌控
變量提升還帶有一個問題,聲明之前使用產生的結果不相同
var在后面聲明前面輸出值邏輯怪異,結果顯示undefined一般表示變量聲明,只是沒賦值,一般順序都是在前面
例子:
console.log(value);
var value;
變量提升導致邏輯怪異
let聲明方式不管前后都是引用錯誤
例子:
//let count放前面可以用符合邏輯
// console.log(count);
// let count//錯的詳細
var重復聲明只取后面的值
let不能重復聲明,重復聲明會報錯只能聲明一個其中一個是var也不行
可以一個在作用域內部,一個在外部(不能使用會混亂)
循環時,var和let區別更明顯
let只在內部循環有效,后續使用i不會受到干擾
var全局都有效,但是在使用i會受到干擾
let和const
const的聲明的作用:創建一個常量,聲明就不可以更改
和let相同的是,const聲明后無法提升,存在臨時死區
臨時死區:if(true){
死區開始
vlue=10;
console.log(vule);
死區結束
}
和let不同的是,const聲明后不立馬賦值就會報錯