gpt4 book ai didi

javascript - 闭包中的 var functionName 与 functionName 赋值

转载 作者:行者123 更新时间:2023-11-30 00:32:17 24 4
gpt4 key购买 nike

这个关闭代码可以工作:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com