Javascript 条件运算符与&&|建造
以下陈述是否存在显著差异:Javascript 条件运算符与&&|建造,javascript,ternary-operator,conditional-operator,Javascript,Ternary Operator,Conditional Operator,以下陈述是否存在显著差异: $value && 'YES' || 'NO'; 及 考虑到您当前的代码,它们或多或少是相同的。如果YES被错误的东西所取代,那就不同了。下面的代码将两者与各种输入进行比较 函数test1($value){ 返回$value&“是”| |“否”; } 函数test2($value){ 返回$value?'YES':'NO'; } 函数比较(desc,$value){ log(desc、test1($value)、test2($value)); }
$value && 'YES' || 'NO';
及
考虑到您当前的代码,它们或多或少是相同的。如果
YES
被错误的东西所取代,那就不同了。下面的代码将两者与各种输入进行比较
函数test1($value){
返回$value&“是”| |“否”;
}
函数test2($value){
返回$value?'YES':'NO';
}
函数比较(desc,$value){
log(desc、test1($value)、test2($value));
}
比较(“真”,真);
比较(“假”,假);
比较(“真实1”,1);
比较(“真实2”、“foo”);
比较(“未定义”);
比较(“falsey”和“”)
如果像在代码示例中一样使用常量进行编码,则没有区别。尤其重要的是,在得到“是”的位置的常数是这样一个真实的值。但是,如果您不知道结果值是什么,那么是的,它们是不同的。考虑:
var x = a ? b : c;
在该代码中,如果a
是真实的,x
将被设置为b
的值,这是肯定的。如果不是,它将被设置为c
的值
另一方面,现在:
var x = a && b || c;
这里,
x
将被设置为b
的值,前提是a
和该值均为真值。如果b
是错误的,那么评估将转到|
的另一边,如果'YES'
是错误的东西呢?不,只是测试了一下,我错了。我没有意识到如果$value是假的,| |仍然会被计算。它们在功能上是相同的,但在我看来,三元的可读性要高得多,但是是的
是truthy@Jamiec我来澄清开头的句子。好的,现在我明白了。
var x = a && b || c;