{
let a = 10;
var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
利用let声明i,获取当前循环次数的索引
用var 声明
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); //10
这样取不到索引值,需要声明一个index
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#main li{
display: inline-block;
width: 100px;
height: 100px;
background: #aaa;
}
</style>
</head>
<body>
<ul id="main">
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<script type="text/javascript">
var main=document.getElementById("main");
var mains=main.getElementsByTagName("li");
for(var i=0;i<mains.length;i++){
mains[i].index=i; //重点就是在这里!
mains[i].onclick=function(){
this.style.background="red";
console.log(this.index);
}
}
</script>
</body>
</html>
如果用let声明i 上面的js部分可以这样写
<script type="text/javascript">
var main=document.getElementById("main");
var mains=main.getElementsByTagName("li");
for(let i=0;i<mains.length;i++){
mains[i].onclick=function(){
this.style.background="red";
console.log(i);
}
}
</script>
ps:let不能重复声明的变量,但变量值可以改变
const PI = 3.1415;
PI // 3.1415
PI = 3;
// TypeError: Assignment to constant variable.
用let const class声明的变量不是全局变量