老师,有个疑问
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let arr = []
for (let i = 0; i < 5; i++) {
arr.push(function () {
console.log(i);
})
}
arr[0]()
</script>
</body>
</html>
问题描述:
这样在外部调用函数时能访问到i,是不是也是因为形成了闭包呢?
只不过外环境变成了块级作用域,而不是函数了
40
收起
正在回答
1回答
同学你好,在外部调用数组中的某个函数时,此时会形成函数作用域,在函数中访问变量i,首先会在函数作用域中查找变量i是否存在,如果不存在的话会向外一层查找,此时会在块级作用域中查找到变量i,如图
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星