1-1 认识一下ES6
我们来举个例子说明一下这个问题
这个例子简单实现3个目标小方块点击效果展示
我们想通过这样的方式 实现 当我们点击 a b c 三个小块的时候弹出0 1 2
但是我们写出来的 不管点击哪个都只会弹出3
<!DOCTYPE html>
<html>
<head>
<title>document</title>
<meta charset="utf-8" />
<style type="text/css"></style>
</head>
<body>
<input type="button" value="a" />
<input type="button" value="b" />
<input type="button" value="c" />
</body>
</html>
<script type="text/javascript">
window.onload = function () {
let aBtn = document.getElementsByTagName("input");
for (var i = 0; i < aBtn.length; i++) {
aBtn[i].onclick = function () {
alert(i);
};
}
};
</script>
结果是这样的
但是我们写出来的 不管点击哪个都只会弹出3
那么我们怎么去解决这个问题呢?
1、立即执行函数,或者说构造一个闭包
2、我们尝试利用更加简单的方法,
也是ES6 的方法 let 定义块级作用域
只需要将var 改成 let 就可以解决
那么为什么呢?
我们再用一个更加直观的例子说明一下这个问题
我们再次鉴定一下var 和 let的关系
1、var 是函数级别的 函数内外都是一样的 是一个值 要变一起变
2、let 则只在块内起作用 是三个独立的个体
我来弄两个简单的图,加强你的认识一下
立即执行函数 或者 for内用 let
2-1 解构赋值
我们现在展示一下
强行分成两句后的结果
我们把它分开试试?