代码语言:javascript复制
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<button>我是按钮1</button>
<button>我是按钮2</button>
<button>我是按钮3</button>
<script type="text/javascript">
/* for(var i = 0; i < 3; i ){ // 0 1 2 3
function test() {
console.log(i); // 3
}
}//先执行完这个循环完在执行test函数.
test();*/
/*let oBtns = document.querySelectorAll("button");
for(var i=0;i<oBtns.length;i )
{
let btn=oBtns[i];
btn.οnclick=function()//先执行完循环再执行函数
{
console.log(i);
}
}*/
/*for(var i=0;i<3;i )
{
(function test(index)
{
console.log(index);
})(i);
}*/
var oBtns = document.querySelectorAll("button");
for(var i = 0; i < oBtns.length; i ) {
let btn = oBtns[i];
(function test(index) { // var index = i;
// console.log(index); // 0 1 2
// 注意点: onclick对应的方法由于满足了闭包的条件, 所以onclick对应的方法也是一个闭包
btn.onclick = function () {
console.log(index);
}
})(i);
}
</script>
</body>
</html>
核心:为什么有012,因为不会释放,找对应的值就行了