let和var的区别

let是es6时新增的命令,它的作用类似var但也有所不同:
1.let声明的变量不会挂在window中,不会造成全局变量的污染

		var a1 = 10;
        let a2 = 20
        console.log(window);

在这里插入图片描述
window上并没有a2说明let声明的变量不会挂在window中

2.新增了一个块级作用域{},以前只有函数作用域,全局作用域

{
  let a = 10;
  var b = 20;
}

a // ReferenceError: a is not defined.
b // 1

es6新增了一个块级作用域;是以{ }为边界的在花括号之外无法调用;

3.let是不允许重复声明

		 let a = 10;
        let a = 20; 
        //报错

4.let不会有声明提前(只是人为看到的效果,实际上是有声明提前,提前到临时性的死区中)

在var中会有一个声明提前的效果,就是:

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

这也就是说这段代码等同于

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

但是在es6中这种特性没有了,

	 	console.log(a);//报错
        let a = 10

ES6 规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在 ES5 是很常见的,现在有了这种规定,避免此类错误就很容易了

注意:因为let const不挂载在windows上,所以,不用有一个遍历原型链的操作,对性能的优化是有一定的提升的。
然后还有一个不成文的传言,官方并没有证实的一个说法,因为const的引用地址不能改变,所以系统不需要分性能监视这个变量。没被证实过,所以看自己,但还是能用const就尽量用const。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值