📜  查找控制台输出:let i;for (i = 0; i < 3; i++){const log = () =>{console.log(i);} - Javascript (1)

📅  最后修改于: 2023-12-03 15:26:37.964000             🧑  作者: Mango

查找控制台输出:let i;for (i = 0; i < 3; i++){const log = () =>{console.log(i);} - Javascript

这是一段 JavaScript 代码,其目的是通过 for 循环打印三次 i 变量的值。

通过使用 const 声明了一个名为 log 的函数,这个函数在调用时会在控制台输出变量 i 的值。

但是,让我们来看一下这段代码的输出,会发现打印的都是数字 3,而不是我们期望的 0、1、2。这是因为在 for 循环内部,const 声明的 log 函数会捕获 i 的引用。当 i 在循环中递增时,每个 log 函数都会引用最终的 i 值,即 3。

如果想要输出正确的结果,可以将 const 声明的 log 函数改成一个使用 let 声明的变量,这样每个循环迭代都会有一个新的 i 值被绑定到该变量上。修改后的代码片段如下所示:

let i;
for (i = 0; i < 3; i++) {
  let log = () => {
    console.log(i);
  };
  log();
}

输出结果将会是:

0
1
2

这样,我们就可以正确地输出每个循环迭代中 i 的值了。