以下语句是否有显著差异:
$value && 'YES' || 'NO';和
$value ? 'YES' : 'NO';发布于 2017-02-24 00:10:01
如果你使用常量编码,就像在你的代码示例中一样,那么不,没有区别。特别重要的是,在你得到"YES"的位置上的常量是这样一个真值。然而,当你不知道结果值是什么时,是的,它们是不同的。考虑一下:
var x = a ? b : c;在该代码中,如果a为truthy,则x将被设置为b的值。如果不是,它将被设置为c的值。
现在,在另一方面:
var x = a && b || c;在这里,只有当b和a都为真时,x才会被设置为b的值。如果b为False值,则求值将转移到||的另一边。
发布于 2017-02-24 00:09:39
根据您当前的代码,它们或多或少是相同的。如果YES被一些虚假的东西取代,那将是另一回事。下面的代码用不同的输入比较了这两个变量。
function test1($value){
return $value && 'YES' || 'NO';
}
function test2($value){
return $value ? 'YES' : 'NO';
}
function compare(desc, $value){
console.log(desc, test1($value), test2($value));
}
compare("true",true);
compare("false",false);
compare("truthy1",1);
compare("truthy2","foo");
compare("undefined");
compare("falsey","")
https://stackoverflow.com/questions/42420697
复制相似问题