gpt4 book ai didi

Java 与 JavaScript 变量范围

转载 作者:行者123 更新时间:2023-11-28 11:05:39 25 4
gpt4 key购买 nike

在以下 Java 代码片段中,i 的范围仅限于for内部环形。这就是它导致错误的原因。然而,在类似的 JS 片段中,i显然可以在循环之外访问。这怎么可能?

Java:

for(int i=0;i<10;i++) {
...
}
System.out.println(i);

输出:“i 未定义”

JS:

for(var i=0;i<10;i++) { 
...
}
console.log(i);

输出:10

我没想到会看到 JS 的输出。我想知道JS和Java有什么不同。 JavaScript 变量作用域如何工作?

最佳答案

在 Javascript 中,“局部”变量具有函数作用域,而不是 block 作用域

所有局部变量声明都“提升”到当前作用域的顶部,因此您的代码相当于:

var i;
for (i = 0; i < 10; ++i) {
}
console.log(i);

请注意,虽然声明被提升,但任何赋值都没有。例如这段代码

function test() {
console.log(i); // undefined
var i = 1; // declaration and assignment
console.log(i); // 1
}

相当于:

function test() {
var i; // declaration hoisted
console.log(i); // undefined
i = 1; // assignment still happens here
console.log(i); // 1
}

关于Java 与 JavaScript 变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645073/

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