Javascript 简写if/else语句:foo?foo:bar vs foo | | bar
我想知道这两者有何不同?Javascript 简写if/else语句:foo?foo:bar vs foo | | bar,javascript,if-statement,shorthand,shorthand-if,Javascript,If Statement,Shorthand,Shorthand If,我想知道这两者有何不同? var hello = foo?foo:bar; vs 你能解释一下吗?举个例子?还是两者都一样 PS:foo/bar应该都像string/int/obj/boolean…The?:被称为条件运算符。它有三个参数(这就是为什么它有时被称为“三元”运算符):要测试的内容,如果测试为真则返回的内容,如果测试为假则返回的内容* 第二个是JavaScript的。它接受两个论点。它计算第一个操作数,如果是真的,则返回它;如果第一个操作数为false,则计算并返回第二个操作数 因
var hello = foo?foo:bar;
vs
你能解释一下吗?举个例子?还是两者都一样
PS:foo/bar应该都像string/int/obj/boolean…The
?:
被称为条件运算符。它有三个参数(这就是为什么它有时被称为“三元”运算符):要测试的内容,如果测试为真则返回的内容,如果测试为假则返回的内容*
第二个是JavaScript的。它接受两个论点。它计算第一个操作数,如果是真的,则返回它;如果第一个操作数为false,则计算并返回第二个操作数
因此,这两者之间的区别在于:使用条件运算符,foo
可以计算两次(如果它是真的)。使用|
,foo
只计算一次。如果foo
和bar
只是简单的变量引用,这其实并不重要,但请考虑:
var hello = foo() ? foo() : bar();
// vs
var hello = foo() || bar();
您可以看到,如果它做了任何重要的工作或有任何问题,那么计算foo()
的次数是多么重要
(*那么什么是“真”和“假”值呢?“假”值是
0
,,NaN
,未定义的,null
,当然还有false
。其他所有的值都是“真的”。?:
被称为条件运算符。它有三个参数(这就是为什么它有时被称为“三元”运算符):要测试的内容,如果测试为真则返回的内容,如果测试为假则返回的内容*
第二个是JavaScript的。它接受两个论点。它计算第一个操作数,如果是真的,则返回它;如果第一个操作数为false,则计算并返回第二个操作数
因此,这两者之间的区别在于:使用条件运算符,foo
可以计算两次(如果它是真的)。使用|
,foo
只计算一次。如果foo
和bar
只是简单的变量引用,这其实并不重要,但请考虑:
var hello = foo() ? foo() : bar();
// vs
var hello = foo() || bar();
您可以看到,如果它做了任何重要的工作或有任何问题,那么计算foo()
的次数是多么重要
(*那么什么是“真”值和“假”值呢?假”值是0
,,NaN
,未定义的,null
,当然还有false
。其他所有的值都是“真的”。所有可能的,布尔。。一串内部。。对象@JonathonReinhart所有可能的,布尔人。。一串内部。。对象@乔纳森·莱因哈特