【发布时间】:2020-07-06 08:46:05
【问题描述】:
<script>
var num1=100;
function test(){
num2=200;
var num1=300;
num1=num2;
}
test();
document.write(num1 +"-"+num2);
</script>
输出为 100-200。这怎么可能……有人请解释一下
【问题讨论】:
标签: javascript output
<script>
var num1=100;
function test(){
num2=200;
var num1=300;
num1=num2;
}
test();
document.write(num1 +"-"+num2);
</script>
输出为 100-200。这怎么可能……有人请解释一下
【问题讨论】:
标签: javascript output
当你使用 var 声明一个函数时,它的作用域仅限于当前的执行上下文。这意味着在您的函数内部,您要声明一个新变量 num1,其范围仅限于函数 test,而不是实际修改全局变量。
这意味着当您访问num1 变量并将其写入文档时,您访问的是全局范围内的变量,实际上并没有改变。
要使您的函数修改全局变量,您只需从函数中删除关键字var。这告诉 javascript 您正在更改全局变量 num1,而不是创建一个仅限于 test 函数的新变量。
希望这会有所帮助!
【讨论】:
您已经在test 范围内重新声明了num1,因此当您在test 范围内更改num1 的值时,全局范围内的num1 不会更改。
检查此article 它可能会帮助您了解 javascript 作用域。
【讨论】:
num1 +"-" + num2:
您是否期望 num1-num2 中的差异?
如果是这样,这将不起作用:
中间的字符串"-" 强制整个东西变成一个字符串。
如果这就是你想要的 - 对不起...... :)
查看其他人关于变量范围的答案。
【讨论】: