【问题标题】:Shorthand if/else statements : foo?foo:bar vs foo || barif/else 语句的简写:foo?foo:bar vs foo ||酒吧
【发布时间】:2013-11-01 08:08:31
【问题描述】:

我想知道这两者有何不同?

var hello = foo?foo:bar;

对

var hello = foo || bar;

你能解释一下吗?和一些案例?还是两者都一样?

PS : foo/bar 应该都像 string / int / obj / boolean...

【问题讨论】:

  • 所有可能,布尔和.. 字符串.. int.. obj.. @JonathonReinhart

标签: javascript if-statement shorthand shorthand-if


【解决方案1】:

? : 被称为 条件运算符 它需要三个参数(这就是为什么它有时被称为“三元”运算符):要测试的东西,如果测试为真则返回的东西,如果测试是假的,则返回一些东西。*

第二个是 JavaScript 的curiously-powerful logical OR operator。它接受两个参数。它计算第一个操作数,如果是真的,则返回它;如果第一个为假,则计算并返回第二个操作数。

所以这两者之间的区别是:使用条件运算符,foo 可能会被计算两次(如果它是真的)。使用||,foo 只评估一次。 foo 和 bar 是否只是简单的变量引用并不重要,但请考虑:

var hello = foo() ? foo() : bar();
// vs
var hello = foo() || bar();

您可以看到评估 foo() 的次数有多重要,它是否有任何重要的工作或是否有任何 side effects。


(* 那么什么是“真”和“假”值?“假”值是0、""、NaN、undefined、null,当然还有false。其他一切都是“真实的”。)

【讨论】:

    猜你喜欢
    • 2016-02-09
    • 2011-07-30
    • 1970-01-01
    • 2019-12-29
    • 2013-08-18
    • 2012-04-09
    • 2021-12-19
    • 1970-01-01
    • 2016-03-11
    相关资源
    最近更新 更多