想打印0——9的十个数字,结果打印出十个10
原因:demo函数里循环体循环的时候,不会关注函数体中的i,所以函数体中的i是个引用值
以下时html页面的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>中国的流浪猫</title>
</head>
<body>
<script>
function demo() {
var arr = []
for (var i = 0; i < 10; i++) {
arr[i] = function () {
console.log(i);
}
}
return arr
}
var son = demo()
for (var j = 0; j < son.length; j++) {
son[j]()
}
</script>
</body>
</html>