简写 if/else 语句:foo?foo:bar 与 foo ||酒吧

问题描述 投票:0回答:2

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

var hello = foo?foo:bar;

var hello = foo || bar;

你能解释一下吗?和一些案例?或者两者相同?

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

javascript if-statement shorthand shorthand-if
2个回答
6
投票

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

第二个是 JavaScript 的强大的逻辑 OR 运算符。它接受两个参数。它评估第一个操作数,如果为真,则返回它;如果第一个操作数为 false,则计算并返回第二个操作数。

所以两者之间的区别是这样的:使用条件运算符,

foo
可能会被评估两次(如果它是真的)。对于
||
foo
仅评估一次。如果
foo
bar
只是简单的变量引用并不重要,但请考虑:

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

您可以看到,评估

foo()
多少次、是否有任何重要作用或有任何 副作用 是多么重要。


(* 那么什么是“真”和“假”值?“假”值是

0
""
NaN
undefined
null
,当然还有
false
。其他一切是“真实的”。)


0
投票

“foo”是在“URL”上下文中编程和文档中常用的占位符

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.