好了,所以我有这段代码,其中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

10-05 20:52
查看更多