我无法理解 JS 中的作用域是如何工作的,我的背景是 R 和 Python。
这是一个玩具示例。games_array 最后总是打印为空。并且控制台中似乎不存在数组变量。
for(var row_i = 0; row_i < 50; row_i++){
var games_array = [];
if(row_i % 2 == 0){
console.log(data[row_i].name);
games_array.push(data[row_i].name);
}
}
console.log(games_array);
Run Code Online (Sandbox Code Playgroud)
但是这有效:
var games_array = [];
for(var row_i = 0; row_i < 50; row_i++){
if(row_i % 2 == 0){
console.log(data[row_i].name);
games_array.push(data[row_i].name);
}
}
console.log(games_array);
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我不能创建一个空数组并在 for 循环中使用它。我需要将其包装在外循环中并在外循环中使用 games_array。
任何帮助表示赞赏。
问题不在于范围界定。毕竟,由于您使用var而不是声明变量let,作用域扩展到 for 循环之外。问题是每次循环运行时,它都会设置games_array为[],这意味着每次循环运行时数组都会被清除。
在第二个示例中,您只初始化数组一次,这就是它起作用的原因。
| 归档时间: |
|
| 查看次数: |
31 次 |
| 最近记录: |