我是 javascript 的新手。我通常用 Java 编程。我对下面的代码片段感到困惑。
<script>
x = "foo";
function bar(p){
if (p){
document.writeln("x = " + x);
} else {
var x = "baz";
}
}
bar("baz");
</script>
当我运行上面的代码时,它的打印被剪断了
x = undefined
为什么它打印 undefined,因为 x 是一个全局变量,所以它应该打印 foo 吗?谁能解释一下吗?
最佳答案
since x is a global variable it should print foo right
如果它没有被函数中的 var x = "baz";
声明所遮蔽,就会出现这种情况;由于提升,它将像您编写的那样执行该函数
function bar(p){
var x; // = undefined
if (p){
document.writeln("x = " + x);
} else {
x = "baz";
}
}
要使代码执行您想要的操作,您只需编写 x = "baz";
而不是 var x = "baz";
。
关于javascript - JavaScript 中的全局变量如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22705181/