gpt4 book ai didi

javascript - 嵌套for循环中的变量定义?

转载 作者:行者123 更新时间:2023-11-30 08:13:01 24 4
gpt4 key购买 nike

某些静态语言(如 Java)似乎对在 for 循环的第一个参数中定义的变量有非常特殊的规则。它们只能通过给定的循环访问,这使得它们的行为非常像 javascript 函数的局部变量和参数。我的意思是这样的:

class ForVariable {
public static void main(String[] args) {
for(int i = 0; i != 0; i++) {}
System.out.println(i); // Throws an Exception
}
}

Javascript 的行为并不像那样,这使得嵌套循环变得非常困惑。我的问题是:通过 var 关键字在后续循环中声明变量是否有效?换句话说 - 以下哪个示例是有效的?

for(var i = 0, j; i < 5; i++) {
for(j = 0; j < 10; j++) <do some stuff>;
}

for(var i = 0; i < 5; i++) {
for(var j = 0; j < 10; j++) <do some stuff>;
}

显然,多次声明一个变量是错误的,这会使第二个例子成为不可能,但考虑到第一个例子是我所知道的大多数语言中循环嵌套的方式,我宁愿犹豫要不要宣布获胜者。

最佳答案

这些都是有效的。 Function scoped vs block 作用域。基本上 JavaScript 中的两个循环都变成了:

function a () {
var i, j;
for(i = 0, j; i < 5; i++) {
for(j = 0; j < 10; j++) <do some stuff>;
}
}

因为 var 声明是 hoisted到顶部

关于javascript - 嵌套for循环中的变量定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7731196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com