let关键字金典面试题

tech2024-12-25  15

1.调用for循环赋值数组中的函数结果(使用var 声明变量i)

<script> var arr= []; for(var i = 0; i < 2; i++) { arr[i] = function() { console.log(i); } } //因为是把函数赋值给数组,所以可以用小括号直接调用。 //var声明的不是块级作用域,所以可以打印,且不满足for循环时,i=2,故arr[0]()、arr[1]()打印的值是2 arr[0](); arr[1](); </script>

2.调用for循环赋值数组中的函数结果(使用let 声明变量i)

<script> let arr= []; for(let i = 0; i < 2; i++) { arr[i] = function() { console.log(i); } } //因为是把函数赋值给数组,所以可以用小括号直接调用。 //let 声明产生的两个块级作用域有自己的值故输出是0 1 arr[0](); arr[1](); </script>

关键点:每次循环都会产生一个块级作用域,每个块级作用域的变量都是不同的,函数执行输出的是自己上一级(循环块级产生的作用域)作用域下的i值。

最新回复(0)