我有一段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();
将返回值转换为真假类型?
感谢您的回复。
最佳答案
简短的回答是:不,&&
不会将事物转换为 bool 值。
&&
仅在获得 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
,“”
。 一切其他都是真实的。
关于return 语句中的 JavaScript && 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6615122/