为什么在Javascript中变量在函数之前声明
我在网上寻找计算器代码,我发现了如下代码 但我心里有个问题。为什么程序员在创建函数之前声明变量为什么在Javascript中变量在函数之前声明,javascript,global-variables,calculator,Javascript,Global Variables,Calculator,我在网上寻找计算器代码,我发现了如下代码 但我心里有个问题。为什么程序员在创建函数之前声明变量 var getValues= ""; function updateField(val) { getValues += val; document.calc.putValues.value = getValues; } 请帮我回答我的问题 谢谢大家。他所做的是将变量移出函数的范围 这将使相同范围内的其他方法可以访问相同的变量 查看此问题以了解有关变量作用域的更多信息:他所做的是将变
var getValues= "";
function updateField(val) {
getValues += val;
document.calc.putValues.value = getValues;
}
请帮我回答我的问题
谢谢大家。他所做的是将变量移出函数的范围 这将使相同范围内的其他方法可以访问相同的变量
查看此问题以了解有关变量作用域的更多信息:他所做的是将变量移出函数的作用域 这将使相同范围内的其他方法可以访问相同的变量
查看此问题以了解有关变量范围的更多信息:这样,它是一个通过函数调用保持其值的全局变量。
如果将它放在函数中,则调用函数时它将始终为0,这样,它是一个全局变量,通过函数调用保持其值。
如果将它放在函数中,调用函数时它将始终为0。您知道,变量实际上可以在函数下声明。但必须在使用之前声明它,也就是说在调用函数之前 我创建了一个测试场景来说明我的意思 我创建了一个名为
test.html
的文本文件,其中包含以下简单内容:
<script type="text/javascript">
var a = "hello"; // <- the declaration of the variable before the function
function b(){ // <- the actual function
a += " world";
alert(a);
}
b(); // <- and here it is called
</script>
结果是一样的:helloworld
但是当我把声明放在电话下面的时候,就像这样:
<script type="text/javascript">
function b(){ // <- the actual function
a += " world";
alert(a);
}
b(); // <- and here it is called
var a = "hello"; // <- the declaration of the variable under the call
</script>
结果是:NaN
意思是不是一个数字
这就是JS的懒惰和宽容。当然,你的问题也可以解释为变量和函数的范围。但对于这一点,已经有两个答案。当然,如果它们还不够,我也可以在这里编辑一个详细的解释。你知道,变量实际上可以在函数下声明。但必须在使用之前声明它,也就是说在调用函数之前
我创建了一个测试场景来说明我的意思
我创建了一个名为test.html
的文本文件,其中包含以下简单内容:
<script type="text/javascript">
var a = "hello"; // <- the declaration of the variable before the function
function b(){ // <- the actual function
a += " world";
alert(a);
}
b(); // <- and here it is called
</script>
结果是一样的:helloworld
但是当我把声明放在电话下面的时候,就像这样:
<script type="text/javascript">
function b(){ // <- the actual function
a += " world";
alert(a);
}
b(); // <- and here it is called
var a = "hello"; // <- the declaration of the variable under the call
</script>
结果是:NaN
意思是不是一个数字
这就是JS的懒惰和宽容。当然,你的问题也可以解释为变量和函数的范围。但对于这一点,已经有两个答案。当然,如果它们还不够,我也可以在这里编辑一个详细的解释。getValues不会“调用函数时总是为零”。它是一个全局变量,在调用函数之前被赋值为“”(空字符串)。如果调用该函数,它将具有该函数分配给它的任何值。因此,它只有在上次调用函数时才被赋值为零。我试图解释,如果它在函数内部,那么它将始终为空,它不会通过不同的调用保持其值,并且不能在其他函数中使用。@RobGcode
var getValues=“”;函数updateField(val){getValues+=val;document.calc.putValues.value=getValues;}我还可以像code
var getValues这样分配变量;为什么我要给它赋值emptygetValues不会“调用函数时总是为零”,这不是很好吗。它是一个全局变量,在调用函数之前被赋值为“”(空字符串)。如果调用该函数,它将具有该函数分配给它的任何值。因此,它只有在上次调用函数时才被赋值为零。我试图解释,如果它在函数内部,那么它将始终为空,它不会通过不同的调用保持其值,并且不能在其他函数中使用。@RobGcode
var getValues=“”;函数updateField(val){getValues+=val;document.calc.putValues.value=getValues;}我还可以像code
var getValues这样分配变量;这不好吗?为什么我要把它分配给空的?非常感谢你。我真的很感谢你的帮助。再次感谢,非常感谢。我真的很感谢你的帮助。再次感谢,非常感谢。现在我正在阅读你给我的链接,它对我很有帮助。非常感谢你。现在我正在阅读你给我的链接,它对我很有帮助。