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已经被声明了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值