Javascript 简写 OR 操作

标签 javascript

我觉得这一定是重复的,但我找不到任何东西,可能是由于措辞不同,或者只是因为确实没有更好的东西。

我正在生成大量的 JS 代码,其中“OR”对象属性与变量,而标识符不一定匹配。看起来像这样(值为 bool 值):

a.borderline = a.borderline || borderline;
a.st1 = a.st1 || st;
a.ref64 = a.ref64 || ref;
a.unfortunatelySometimesQuiteLongIndentifier123 = a.unfortunatelySometimesQuiteLongIndentifier123 || unfortunatelySometimesQuiteLongIndentifier;
...

为了让它更精简,我尝试了类似的方法

a.st1 |= st;

但它使 a.st1 成为整数而不是 bool 值,我不想添加另一行带有双重否定的代码以将其重新键入回 bool 值。

根据直觉,我也尝试了 ||=,但没有帮助 :)

有没有更好(更短)的方式来编写这些命令?

注意:我无法使用循环来处理命令,因为这些命令不会一次全部执行,而是分散在其余代码中的小块中(为简单起见,省略了这些命令).

最佳答案

不,javascript 中没有简写 OR 运算符。 Coffeescript但是提供 ||=?= 来支持 this idiom .

Is there any better (shorter) way of writing these commands?

在您的例子中,您正在修改 a 对象而不是分配给变量。您可以以循环方式执行此操作:

function amendWith(target, source)
    for (var p in source)
        if (!target[p])
            target[p] = source[p];
    return target;
}

amendWith(a, {
    borderline: borderline,
    st1: st,
    ref64: ref,
    unfortunatelySometimesQuiteLongIndentifier123: unfortunatelySometimesQuiteLongIndentifier
    …
});

关于Javascript 简写 OR 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23393788/

相关文章:

javascript - 按钮单击事件触发错误的事件处理程序

javascript - 如何使用Jquery在每个li之间添加li

javascript - 尽管我确实将 jQuery 添加到了 HTML 文件中,但是 fadeIn 并不是一个函数

javascript - 奇怪的 SVG/javascript 行为

javascript - jqueryUI 自动完成示例如何摆脱不使用 $(document).ready 的情况

JavaScript 对象数组和打印

javascript - 自定义 HTML5 视频控件 - Escape 按钮不会触发全屏切换功能

javascript - 使用 ddSlick 并按值而不是索引选择列表中的项目

javascript - 在函数和 if 语句中设置全局变量值

javascript - 自调整 CSS 边框宽度