[英]JS Global and Local Variables
我一直在努力使一些代码正常工作,我认为这是由于我的可变范围。 我没有在这里发布所有代码,而是做了一个简化的版本,问“为什么不起作用”:
$(document).ready(function() {
console.log("INITIALIZE");
var aGlobalVariable = 25;
function testFunction(){
var aLocalVariable = 5;
var sumVariables = aGlobalVariable + aLocalVariable;
console.log(sumVariables);
}
});
我希望testFunction能够看到GlobalVariable,将25加上5,然后输出30。它不会这样做。 如果尝试对其进行console.log,我什至看不到全局变量:
在文档开始处声明的变量不是全局变量吗????
谢谢!
在testFunction中确实知道aGlobalVariable
。 调用该函数并检出控制台:
$(document).ready(function() {
console.log("INITIALIZE");
var aGlobalVariable = 25;
function testFunction() {
var aLocalVariable = 5;
var sumVariables = aGlobalVariable + aLocalVariable;
console.log(sumVariables);
}
testFunction();
});
这是显示此内容的jsfiddle: https ://jsfiddle.net/0c8rpLmj/
当您尝试通过控制台查看aGlobalVariable
时,它是未定义的,因为它实际上不是全局的(您已经在ready函数作用域下定义了它)。
那不是全局变量。 在ready
函数之外定义它。
var aGlobalVariable = 25;
$(document).ready(function() {
console.log("INITIALIZE");
function testFunction(){
var aLocalVariable = 5;
var sumVariables = aGlobalVariable + aLocalVariable;
console.log(sumVariables);
}
});
现在您应该可以看到它的工作了。
函数表达式也创建变量作用域。
$(document).ready(function() {
var aGlobalVariable = 25;
您的变量位于函数内部,并用var
声明,因此它不是全局变量。
如果要使其成为全局变量,请将其移到函数表达式之外。
var aGlobalVariable = 25;
$(document).ready(function() {
就是说,使其成为全球性的公司不是一个好主意。 将其保留在本地范围内,但可被该范围内的所有功能访问,这意味着您可以减少其他脚本对变量的更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.