首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件运算符与&& ||构造的区别

条件运算符与&& ||构造的区别
EN

Stack Overflow用户
提问于 2017-02-24 00:04:24
回答 2查看 81关注 0票数 2

以下语句是否有显著差异:

代码语言:javascript
复制
$value && 'YES' || 'NO';

代码语言:javascript
复制
$value ? 'YES' : 'NO';
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-24 00:10:01

如果你使用常量编码,就像在你的代码示例中一样,那么不,没有区别。特别重要的是,在你得到"YES"的位置上的常量是这样一个真值。然而,当你不知道结果值是什么时,是的,它们是不同的。考虑一下:

代码语言:javascript
复制
var x = a ? b : c;

在该代码中,如果a为truthy,则x将被设置为b的值。如果不是,它将被设置为c的值。

现在,在另一方面:

代码语言:javascript
复制
var x = a && b || c;

在这里,只有当ba都为真时,x才会被设置为b的值。如果b为False值,则求值将转移到||的另一边。

票数 5
EN

Stack Overflow用户

发布于 2017-02-24 00:09:39

根据您当前的代码,它们或多或少是相同的。如果YES被一些虚假的东西取代,那将是另一回事。下面的代码用不同的输入比较了这两个变量。

代码语言:javascript
复制
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","")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42420697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档