JavaScript之var let const的區別

JavaScript之var let const的區別

  • var:存在變量提升,沒有塊的概念,可以跨塊訪問, 不能跨函數訪問,會掛載在window上。
  • let:不存在變量提升,只能在塊作用域裏訪問,不能跨塊訪問,也不能跨函數訪問,不會掛載在window上。
  • const:不存在變量提升,使用時必須初始化,只能在塊作用域裏訪問,而且不能修改,如果聲明的是複合類型數據,可以修改其屬性,不會掛載在window上。

舉例說明

1.var聲明變量存在變量提升,let和const不存在變量提升
console.log(a); // undefined
var a = 100;

console.log(b); // 報錯:b is not defined   找不到b這個變量
let b = 10;

console.log(c); // 報錯:c is not defined   找不到c這個變量
const c = 10;

2.let和const聲明形成塊作用域
if(1){
    var a = 100;
    let b = 10;
    const c = 1;
}

console.log(a); // 100
console.log(b)  // 報錯:b is not defined       找不到b這個變量
 console.log(c)  // 報錯:c is not defined      找不到c這個變量
3.var聲明的變量會掛載在window上,let和const不會
var a = 100;
console.log(a,window.a);    // 100 100

let b = 10;
console.log(b,window.b);    // 10 undefined

const c = 1;
console.log(c,window.c);    // 1 undefined
4.同一作用域下var可以聲明同名變量,而let和const不可以
var a = 100;
console.log(a); // 100

var a = 10;
console.log(a); // 10

let b = 100;
let b = 10;
//  控制檯報錯:Identifier 'b' has already been declared    標識符a已經被聲明瞭。

const c=100;
const c=10;
//  控制檯報錯:Identifier 'c' has already been declared    標識符a已經被聲明瞭。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章