好了,所以我有这段代码,其中function
返回boolean
此代码应在for
循环中执行。但是它只会执行一次。为什么会这样呢?
function a(){
alert("in a execution");
var ret = true;
for(var i = 0; i < 5; i++){
ret = ret && b();
}
};
function b(){
alert("in b execution");
return false;
};
a();
如果我将代码更改为以下代码,则它可以工作。但是为什么我必须将函数的结果存储在一个额外的变量中?
function a(){
alert("in a execution");
var ret = true;
for(var i = 0; i < 5; i++){
var bret = b();
ret = ret && bret;
}
};
function b(){
alert("in b execution");
return false;
};
a();
最佳答案
布尔函数&&的工作方式如下:
如果你有
a = false && b()
您的函数b()将永远不会执行,导致false && ANYTHING = false
在这种情况下,您将具有相同的功能:
a = true || b()
真实|| ANYTHING =始终为true,因此解释器不必知道是什么-true或false