我有一段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类型?
感谢您的回复。
答案 0 :(得分:4)
简短的回答是:不,&&
不会将事物转换为布尔值。
&&
只有在获得 truthy 值时才会继续,并返回第一个 falsy 值,或最后一个值,意思是:
undefined && true == undefined
true && true == true
true && false == false
1 && 2 && 3 == 3
1 && 2 && 0 && 4 == 0
因此,如果您的病情是假的,例如, false
或undefined
,它会返回该确切的值。如果您的条件是真实的,它将返回doSomethingAndReturnObj()
返回的任何内容。
虚假值供参考:null
,undefined
,0
,false
,NaN
,""
。 一切 其他都是真的。
答案 1 :(得分:2)
JavaScript的&&
运算符合并。
js> 0 && 7
0
js> 1 && 7
7
答案 2 :(得分:1)
doSomethingAndReturnObj()返回的值不会转换为true或false。