JavaScript&&运算符在return语句中

时间:2011-07-07 18:06:48

标签: javascript

我有一段JavaScript代码如下:

function main(condition){
    if(condition){
        doSomething();
        return obj;
    }
}

现在我想重构这段代码以摆脱“if”语句。这就是我想要做的事情

function main(condition){
    var doSomethingAndReturnObj = function(){
        doSomething();
        return obj;
    }
    return condition && doSomethingAndReturnObj();
}

这是我需要帮助的地方。 main函数的调用者期望返回值为“undefined”或obj。在我的重构代码中,我的

返回条件&& doSomethingAndReturnObj();

将返回值转换为true和false类型?

感谢您的回复。

3 个答案:

答案 0 :(得分:4)

简短的回答是:不,&&不会将事物转换为布尔值。

&&只有在获得 truthy 值时才会继续,并返回第一个 falsy 值,或最后一个值,意思是:

undefined && true == undefined
true && true      == true
true && false     == false
1 && 2 && 3       == 3
1 && 2 && 0 && 4  == 0

因此,如果您的病情是假的,例如, falseundefined,它会返回该确切的值。如果您的条件是真实的,它将返回doSomethingAndReturnObj()返回的任何内容。

虚假值供参考:nullundefined0falseNaN"" 一切 其他都是真的。

答案 1 :(得分:2)

JavaScript的&&运算符合并

js> 0 && 7
0
js> 1 && 7
7

答案 2 :(得分:1)

doSomethingAndReturnObj()返回的值不会转换为true或false。