我通过使用定义的字符串调用setAndCheck
函数内的变量来将其值设置为1。该值已设置,但是当我稍后调用该函数以稍后检查该值时,似乎尚未应用更改,因此未执行相关的if语句。
该函数的工作是,如果以适当的方式调用,则将1赋给参数,然后调用该函数以检查是否已设置并返回1。如果不是,则最后仅返回0。
function setAndCheck(arg) {
var first_one = 0;
var second_one = 0;
if (arg == "setIt1")
first_one = 1;
else if (arg == "setIt2")
second_one = 1;
else if (arg == "checkIt1" && first_one)
return 1;
else if (arg == "checkIt2" && second_one)
return 1;
return 0;
}
在用"setIt1"
和"setIt2"
设置两个变量之后,我期望输出1。但是该函数仍然返回0,这意味着用"checkIt1"
或"CheckIt2"
调用时变量的值为0。
答案 0 :(得分:2)
每次在函数内部定义一个变量时,由于重新声明该变量,因此只要您再次调用该函数,该变量就会重置。要使变量持久存在,您需要通过将其置于函数之外来使其在全局范围内可用。
var first_one = 0;
var second_one = 0;
function setAndCheck(arg){
if (arg == "setIt1")
first_one=1;
else if (arg == "setIt2")
second_one=1;
else if (arg == "checkIt1" && first_one)
return 1;
else if (arg == "checkIt2" && second_one)
return 1;
return 0;
}
答案 1 :(得分:0)
我稍后调用该函数以稍后检查值,看起来像那样 更改尚未应用,因此相关的if语句 没有执行。
每次调用该函数都会再次创建该变量。因此,该值将永远不会保存。
您可以在函数外部创建变量,然后分配值。 下次您无需调用该函数,而直接使用该值
答案 2 :(得分:0)
据我所知,问题在于您在函数范围内声明并初始化了变量。
让我们从头开始。
edit:第二个问题是局部变量(函数结束时在函数内部声明的变量不复存在。因此,每次执行并退出该函数时,first_one和second_one都会消失。唯一的保留值的方法是在调用函数之前先声明first_one和second_one。