为啥用三元操作符(ternary)

condition ? expr1 : expr2

三元操作符用来简化条件判断

这个操作符可以用来代替if else条件判断。但是为什么有这个操作符呢?这里的原因是if else使用两个代码块,确只有一个会执行,在讲究的程序员看来是一种浪费。所以使用三元操作符用一条语句就可以完成功能就很有吸引力了。我们来看看下面的例子

var i=0;
var fee;
if(isMember){fee="$2.00";
}else{fee="$10.00";
}
fee=isMember ? "$2.00" : "$10.00";

三元操作符用来执行多个操作

三元操作符的结果语句可以执行多个操作,每个操作用逗号分隔就可以

var age = 23;
var car,school;
age > 18 ? (car = "奇瑞QQ",school = "清华第一幼儿园"//do someting
) : (alert("Sorry, you are much too young!")
);

这样也精简了不少代码。

三元操作符容易出错的地方

下面这个语句判断如果是会员,费用为2美元,非会员,为10美元。现在设置了非会员,却打印出了2美元,显然出错了。

var isMember = false;
console.log("当前费用" + isMember ? "$2.00" : "$10.00");

出错的原因是?号的优先级比+号低,所以实际运行的语句是

"当前费用false" ? "$2.00" : "$10.00");

在js中,字符串为真,所以打印出$2.00。
不是false, 0, undefined, NaN, "" or null,js都认为是true

转载于:https://www.cnblogs.com/xiaohu1986/p/5203507.html

javascript三元操作符相关推荐

  1. javascript——三元操作符

    {{C?A:B}} C条件成立则为A,不存在取B 比如在跟后台交互时,有许多要设默认值 <script type=''text/javascript> var value = docume ...

  2. 从头开始学JavaScript (五)——操作符(二)

    原文:从头开始学JavaScript (五)--操作符(二) 一.乘性操作符 1.乘法:*      乘法操作符的一些特殊规则: 如果操作数都是数值,按照常规的乘法计算,如果乘积超过了ECMAscri ...

  3. java三元操作符注意

    /* 三元操作符的类型务必一致 */ public class proposal_3 {public static void main(String[] args) {int i=80;String ...

  4. sql语句中的in用法示例_示例中JavaScript in操作符

    sql语句中的in用法示例 One of the first topics you'll come across when learning JavaScript (or any other prog ...

  5. Java 操作符:Java 中操作符优先级、一二三元操作符及逻辑操作符的中德模佛定理

    文章目录 前言 一.操作符介绍与优先级表 二.一元运算符与二元运算符的区别? 三.Java 中唯一的三元操作符 四.逻辑操作符中的德模佛定理 总结 前言 在 Java 中我们常见的操作符分为三种,分别 ...

  6. ruby三元操作符_在Ruby中使用操作符将元素添加到数组实例中

    ruby三元操作符 In the previous articles, we have gone through ways through which we can create Array inst ...

  7. [改善Java代码]三元操作符的类型务必一致

    建议三: 三元操作符是if-else的简化写法,在项目中使用它的地方很多,也非常好用,但是好用又简单的东西并不表示就可以随便用,我们来看看下面这段代码: 1 public class Client { ...

  8. 用三元操作符替代if-else以降低CPU分支预测惩罚实现Unity内函数13倍提速

    测试对象 1,C# (Unity脚本) 2,C# DLL(mcs build的动态链接库再导入Unity) 3,C Native Code(LLVM编译后导入Unity) 被测试函数源码 两个随机数数 ...

  9. lua语言和python_[动态语言]python和lua中的三元操作符and-or

    在这两种语言中,表达式a and b的返回值不是true或false,而是a/b当中非真的值,而表示a or b返回的是a/b当中为真的那个. 因此,要想模拟C/C++中的三元操作符c ? a : b ...

最新文章

  1. 程序员必备网站之一:No Design
  2. 无需u盘和光盘安装linux
  3. 机器学习(三):支持向量机SVM(含代码和注释)
  4. Python 数据结构与算法 —— 哈弗曼树
  5. RK3288的GTxx触摸屏驱动调试
  6. stringbuffer字符串反转操作
  7. iOS ipa包进行重新签名
  8. java导出地图矢量Shp文件
  9. jenkins+docker进行coverity检查自动构建
  10. avue-crud初始化下拉列表,以及复选框,默认选中
  11. SAD—系统分析和设计 “机票预订系统”_软件工程导论大作业
  12. android日历订阅,Android日历.
  13. 将 ERP 与 PPM 系统集成的 5 个理由
  14. 七人成团即拼即赚七人拼团模式解析
  15. 28python成功输出腾讯位置大数据北京地区迁出数据
  16. 计算任意多边形的面积
  17. 那些年,我们一起游玩过的地方
  18. 2017年技术教练认证流程回顾
  19. Uncaughr SyntaxError:Ivalid or unexpected toke(JS)
  20. yolov5中关闭wandb

热门文章

  1. 如何学好Python自动化,每个进阶的测试人都应该看看
  2. 学会shell 基本语法,玩转linux
  3. 华为p40pro如何升级鸿蒙,可以升级到鸿蒙OS的四款华为手机,相信都没有后悔入手!...
  4. medit 和 .mesh 文件
  5. 如何查看静态库中有哪些函数
  6. fprintf,input和disp函数
  7. 3DShader之投影贴图(Projective Texturing)
  8. VS2008下CEGUI 0.7.1的安装
  9. 大学生php实训心得1500_通知 | 关于举办全国第五届暨河南省第一届大学生国际学术研讨会通知...
  10. Pytext支持分布式训练,Facebook AI基于PyTorch的NLP框架,简化部署流程