一.var聲明的變量會掛載在window上律胀,而const和let變量不會
var a = 100;
console.log(a,window.a); // 100 100
let b = 1;
console.log(b,window.b); //1 undefined
const c = 10;
console.log(c,window.c); //10 undefined
二.var聲明變量存在變量提升,let和const不存在變量提升
console.log(a); // undefined ------ a已聲明還沒賦值罪佳,默認(rèn)得到undefined值
var a = 100;
console.log(b); // 報(bào)錯:b is not defined ------ 找不到b這個(gè)變量
let b = 10;
console.log(c); // 報(bào)錯:c is not defined ------ 找不到c這個(gè)變量
const c = 10;
三.let和const聲明形成塊作用域
if(1){
var a = 100;
let b = 10;
const c = 1;
}
console.log(a); // 100
console.log(b) // 報(bào)錯:b is not defined ------- 找不到b這個(gè)變量
console.log(c) // 報(bào)錯:c is not defined ------- 找不到c這個(gè)變量
四赘艳、同一作用域下var可以聲明同名變量投储,而let和const不能
var a = 100;
console.log(a); // 100
var a = 10;
console.log(a); // 10
let a = 100;
let a = 10;
// 控制臺報(bào)錯:Identifier 'a' has already been declared ------- 標(biāo)識符a已經(jīng)被聲明。
let 聲明的變量娇掏,具有如下幾個(gè)特點(diǎn):
(1)let 聲明的變量具有塊作用域的特征勋眯。
(2)在同一個(gè)塊級作用域,不能重復(fù)聲明變量客蹋。
(3)let 聲明的變量不存在變量提升,也就是 let 聲明存在暫存死區(qū)番电。
const聲明的變量,除了有l(wèi)et的幾個(gè)特點(diǎn)外漱办,還有一個(gè)聲明后不能再修改,也就是常量暇屋。