let和var区别

作用域不同

let的作用域制作用于当前代码块

{
var str1 = "刘能";
let str2 = "赵四";
}
console.log(str1);//undefined
console.log(str2);//str is not defined
  • let就会报错。因为var作用的是函数作用域,let作用的是块级作用域。
  • 块级作用域:即在{}花括号内的域,由{ }包括,比如if{}块、for(){}块。
  • 函数级作用域:变量在声明它们的函数体以及这个函数体嵌套的任意函数体都是有定义的
  • 暂时性死区:全局的作用域、函数作用域,是没有块级作用域的。

let的作用域不会被提升

  • var提升了作用域
{
  console.log(str);//undefined
  var str = "刘能";
}

相当于

{
 var str ;
 console.log(str);//undefined
 str = "刘能";
}

let会直接报错

 { 
   console.log(str);//str is not defined
   let str = "刘能";
}

let在相同的作用域下不能声明相同的变量

{
  var str = "刘能";
  var str = "赵四";
  console.log(str);//赵四
}



{
  let str = "刘能";
  let str = "赵四";
  console.log(str);//Identifier 'str' has already been declared
}

let会覆盖前面的变量,而let不允许声明相同变量,会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值