这个关闭代码可以工作:
function setupSomeGlobals(){
var num = 666;
gPrintNumber = function() { // play with var assignment
console.log(num)
}
gIncreaseNumber = function() {
num++;
}
}
setupSomeGlobals();
gPrintNumber();
gIncreaseNumber();
gPrintNumber();
然而,当我在代码中的函数前面放置 var
关键字时,这一切似乎都不起作用。这是为什么? var
是否仅使这些变量成为本地变量?为什么这很重要?
function setupSomeGlobals(){
var num = 666;
var gPrintNumber = function() { // play with var assignment
console.log(num)
}
var gIncreaseNumber = function() {
num++;
}
}
setupSomeGlobals();
gPrintNumber(); // ReferenceError: gPrintNumber is not defined
gIncreaseNumber();
gPrintNumber();
最佳答案
Is var making these variable local only?
没错。您无法从 setupSomeGlobals
函数外部访问局部变量。
未声明的变量,即没有var
,成为全局变量,你应该避免这种非常糟糕的做法。如果你想以干净和安全的方式封装一些功能,试试模块模式:
function setupSomeMethods() {
var num = 666;
return {
gPrintNumber: function() {
console.log(num)
},
gIncreaseNumber: function() {
num++;
}
};
}
var methods = setupSomeMethods();
methods.gPrintNumber(); // 666
methods.gIncreaseNumber();
methods.gPrintNumber(); // 667
关于javascript - 闭包中的 var functionName 与 functionName 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28975328/