这就是事情的运作方式。在这样的for循环顶部声明的变量仅在当前迭代的for块内可见。你可以这样想:<loop> { let i = getCount(); console.log(i) // logs current value of i}wheregetCount运行递增的逻辑i。用 with 声明的变量let是块范围的 -i在外部引用是没有意义的。如果i 是的外部可见的for,你会想到它的价值是?i对于循环的每次迭代,您已经有了一个单独的绑定。有点随意地选择这些绑定之一在外面可见是没有意义的。
因为它是for循环中的局部变量,而不是在循环之外。如果您已在循环外声明它,则可以正确访问它。(function() { let i; for (i = 0; i < 5; i++) { console.log(i); } console.log(i);})();