[英]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
仅计算一次。 foo
和bar
仅仅是简单的变量引用并不重要,但请考虑:
var hello = foo() ? foo() : bar();
// vs
var hello = foo() || bar();
您可以查看foo()
被执行多少次或是否有任何副作用的评估次数。
(*那么“ truthy”和“ falsey”值是什么?“ falsey”值是0
, ""
, NaN
, undefined
, null
,当然还包括false
。其他所有值都是“ truthy”。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.