ES6中的let和const

一、let与var的区别

1.let不存在变量的提升,存在暂时性死区。

var定义存在变量提升:

console.log(i)
var i=1;
//输出结果为 undefined

在js中有预解析,此例中i变量提升了,具体代码解析顺序。如下:

var c;
console.log(i) //所以最后结果为 undefined
i=1

使用let定义:

console.log(i)
let i=1;
//出现报错信息 Uncaught ReferenceError: i is not defined

出现报错信息,如下:

Uncaught ReferenceError: i is not defined

2.let同一个作用域下不能定义同一个名称。

代码块一:

//使用var重复定义是不会报错的 v
var num=1;
var num=100; 
console.log(num)//输出结果为 100 

代码块二:

 //let同一个作用域重复定义会报错
let num=1; 
let num=100;
console.log(num)//出现报错信息 

代码块二报错信息,如下:

Uncaught SyntaxError: Identifier 'num' has already been declared

扩展:

let t=1;
t=100;//赋值
console.log(t) //输出结果  100

3.let有严格的作用域。
var的作用域只有函数与函数外。

function fun(){
    var num=10;
    if(ture){
   	 var num=100
    };
    console.log(num)
};
fun()//输出结果 100
var定义的后面覆盖前面定义的,造成变量污染。
特别在开发中,不知道之前定义的变量名,后面再定义就会造成变量污染

let的作用域是块作用域(一对大括号就是一个作用域)

function fun(){
   let num=10;
    if(ture){
   	 let num=100
    };
    console.log(num)
};
fun()//输出结果 10
let定义时,函数是一个作用域,if是一个作用域,不存在覆盖值。
输出在函数作用域所以输出函数作用域定义的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值