JavaScript中的全局变量是如何工作的?
我是javascript的新手。我通常用Java编程。我被下面的代码片段弄糊涂了JavaScript中的全局变量是如何工作的?,javascript,global-variables,scope,Javascript,Global Variables,Scope,我是javascript的新手。我通常用Java编程。我被下面的代码片段弄糊涂了 <script> x = "foo"; function bar(p){ if (p){ document.writeln("x = " + x); } else { var x = "baz"; } } bar("baz"); </script> 既然x是一个全局变量,它为什么要打印未定义,它应该打印foo-right?有人能解释一下吗 因为x是一个全
<script>
x = "foo";
function bar(p){
if (p){
document.writeln("x = " + x);
} else {
var x = "baz";
}
}
bar("baz");
</script>
既然x是一个全局变量,它为什么要打印未定义,它应该打印foo-right?有人能解释一下吗
因为x是一个全局变量,所以它应该正确地打印foo
如果它没有被var x=“baz”隐藏,它就会被隐藏起来代码>在函数中进一步向上声明;由于提升,它将执行函数,就像您编写
function bar(p){
var x; // = undefined
if (p){
document.writeln("x = " + x);
} else {
x = "baz";
}
}
要使代码实现您想要的功能,只需编写x=“baz”代码>而不是var x=“baz”
尝试此输出是x=foo
var x="foo";
function bar(p){
if (p){
document.writeln("x = " + x);
} else {
x = "baz";
}
}
bar("baz");
不要在var x=“baz”中向x添加var代码>刚刚x=“baz”代码>
var x="foo";
function bar(p){
if (p){
document.writeln("x = " + x);
} else {
x = "baz";
}
}
bar("baz");