return 语句中的 JavaScript && 运算符

标签 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();

将返回值转换为真假类型?

感谢您的回复。

最佳答案

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

&& 仅在获得 truthy 值时继续,返回第一个 falsy 值,或最后一个值,意思是:

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

所以如果你的条件是假的,例如falseundefined,它将返回准确的值。如果您的条件为真,它将返回 doSomethingAndReturnObj() 返回的任何内容。

供引用的假值:nullundefined0falseNaN“”一切其他都是真实的。

关于return 语句中的 JavaScript && 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6615122/

相关文章:

javascript - 为什么我的图片没有加载?

javascript - JSON Google 图书和 Ajax

javascript - 如何最有效地搜索数据? (RAM 或 MongoDB 中的对象)

javascript - Angular 13 - 从 ByteArray 数据下载文件

javascript - 如何在 Angular 应用程序运行时将 ES6 代码转换为 ES5 代码

javascript - 从 JavaScript 中的 URL 字符串中提取特定单词

javascript - notepad++ 正则表达式 将 "00"替换为 "01"、 "02"、 "03"等

javascript - 如何查看基于 JavaScript 的 UWP 是否在 "background task"上下文中运行?

javascript - 通过ajax在索引页上显示记录?

javascript - 使用 javascript 来防止 CTRL+Leftclick 上的上下文菜单