我有以下代码可供使用:
function loopingFunction(){
if(typeof(foo)=="undefined"){
var foo = 0;
}
alert(foo);
if(foo==0){
// some codes here
}
foo++;
}
loopingFunction被多次调用,每次我的变量foo保持不变。当我尝试增加它时,它会丢失
计数器似乎不起作用,每次调用函数时都会增加var foo。
这有什么解决方法吗? 任何帮助都将不胜感激..
仅供参考我不能让foo全球化,我必须找到一个使用闭包的解决方法..
答案 0 :(得分:2)
您在函数内声明foo
。它的范围是该功能。每次调用该函数时,都会创建一个名为foo
的新变量。
如果要重用相同的变量,请在外部声明。
var foo;
function loopingFunction() {
if (typeof foo === "undefined") {
foo = 0;
}
alert(foo);
if (foo == 0) {
// some codes here
}
foo++;
}
loopingFunction();
loopingFunction();
loopingFunction();
您可以在循环外执行所有初始化,而不仅仅是事情。
var foo = 0;
function loopingFunction() {
alert(foo);
if (foo == 0) {
// some codes here
// … these could probably be moved outside the function too
}
foo++;
}
loopingFunction();
loopingFunction();
loopingFunction();
如果您希望foo
不是全局的,可以使用闭包:
var loopingFunction = function() {
var foo = 0;
function loopingFunction() {
alert(foo);
if (foo == 0) {
// some codes here
// … these could probably be moved outside the function too
}
foo++;
}
return loopingFunction;
}();
loopingFunction();
loopingFunction();
loopingFunction();
答案 1 :(得分:0)
您正在声明局部变量。您必须通过两种方式初始化为全局:
body {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
var foo = 0;
function looping....
答案 2 :(得分:0)
您声明 foo 变量是本地使其成为全局变量。
core_data.swap(temp_data)