ES6--let

1.基本概念

let命令:用来声明一个变量,和var非常类似

2.用let声明变量的注意事项

1)使用let声明的变量,该变量只在命令所在的代码块内有效

{
let a=1;
var b=2;
console.log(a)//正确
}
console.log(a)//报错
console.log(b)//正确

2)使用let命令声明的变量在预解析的时候不会被提升
因为存在预解析,所以a可以被访问到,是undefined

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

下面则会直接报错

console.log(a);//报错
let a=1;
typeod c;//报错
let c=10;
let f=10;
function fn(){
  f=7;
  let f=2;//暂时性死区
}
fn();//报错

3)let不允许在同一个作用域下声明已经存在的变量,以下都会报错

var a=1;
let a;
let b=1;
let b=2;
4.let在for循环中的应用

1)看一道常见的面试题

<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
<script>
var btns=document.querySelectorAll("button");
for(var i=0;i<btns.length;i++){
  btns[i].onclick=function(){
   console.log(i);
  }
}
</script>

执行上面代码,发现无论点击哪个按钮,最终都会打印5,可以做下面的修改

for(var i=0;i<btns.length;i++){
  btns[i].index=i;
  btns[i].onclick=function(){
   console.log(this.index);
  }
}

也可以使用闭包的形式

for(var i=0;i<btns.length;i++){
  (function(i){
      btns[i].onclick=function(){
        console.log(i);
      }
   })(i)
}

现在可以使用let可以直接解决这个问题

for(let i=0;i<btns.length;i++){
  btns[i].onclick=function(){
   console.log(i);
  }
}

2)在循环语句之内是一个父作用域,在循环体之中是一个子作用域

for(let i=0;i<3;i++){
   let i=10;
   console.log(i);//10说明不收外面for循环的影响
}
console.log(i);//报错,未被定义。说明for循环只在循环内起作用
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值