Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简写if/else语句:foo?foo:bar vs foo | | bar_Javascript_If Statement_Shorthand_Shorthand If - Fatal编程技术网

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所有可能的,布尔人。。一串内部。。对象@乔纳森·莱因哈特