js中关于let/const和var的区别

let/const和var的区别

1、let和const不存在变量提升机制

创建变量的六种方式中: var/function声明的变量有提升机制,而let、const、class和import都不存在这个机制

2、var允许重复声明,而let是不允许的

在相同的作用域下(或者执行上下文中)

  • 如果使用var/function关键字声明变量并且重复声明了,是被允许的,只是靠前的声明会被靠后声明的变量覆盖掉;
  • 但是使用let/const声明的变量就不允许重复声明,浏览器在代码执行之前会校验当前作用域下是否已经存在这个变量了,如果已经存在了,则再次基于let/const进行重新声明就会报错
// 下面代码运行结果是什么?
// => 会直接报错,一次打印也没有。因为浏览器在执行代码之前检测到变量a用let重复声明了,就会出现语法错误。
// => 所谓重复是指在当前作用域下,不管这个变量是用什么关键字声明的,只要后面又出现了用let/const等重复声明这个变量,就会报语法错误
console.log(1);  // => 这行代码不执行(检测在代码执行之前)
let a = 12;
console.log(a);
let a = 13;
console.log(a);
// 下面代码运行结果:
// => 会报语法错误,因为浏览器检测到已经有变量a了,但是后面又用let声明了a,属性变量重复声明了,所以报错
console.log(a); // => 这行代码不执行
var a = 12;
let a = 13;  // => 这里将let改为var的话就不会报错
console.log(a);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值