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已经被声明了。

你可能感兴趣的:(javascript,javascript,var,let,const)