繁体   English   中英

if / else简写:foo?foo:bar vs foo || 酒吧

[英]Shorthand if/else statements : foo?foo:bar vs foo || bar

我不知道这两个有何不同?

var hello = foo?foo:bar;

var hello = foo || bar;

你能解释一下吗? 还有一些例子? 还是两者相同?

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

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

第二个是JavaScript 强大的逻辑OR运算符 它接受两个参数。 它计算第一个操作数,如果不正确,则返回它; 如果第一个为假,它将求值并返回第二个操作数。

因此,这两者之间的区别是:使用条件运算符,可以对foo进行两次评估(如果正确)。 || foo仅计算一次。 foobar仅仅是简单的变量引用并不重要,但请考虑:

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

您可以查看foo()被执行多少次或是否有任何副作用的评估次数。


(*那么“ truthy”和“ falsey”值是什么?“ falsey”值是0""NaNundefinednull ,当然还包括false 。其他所有值都是“ truthy”。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM