三目运算符(三元运算符)

三目运算符:运算符需要三个操作

语法:表达式1?表达式2:表达式3

表达式1是一个条件,值为Boolean类型

若表达式1的值为true,则执行表达式2的操作,并且以表达式2的结果作为整个表达式的结果;

若表达式1的值为false,则执行表达式3的操作,并且以表达式3的结果作为整个表达式的结果;

示例:

'0'和's'的布尔值都是true,所以返回第二个表达式的值 'hello'

数字 0的布尔值为false,所以返回第三个表达式的值 'world'

案例:数字补0

用户输入数字,如果数字小于0,就在前面补0,例如01,09,如果数字大于10,就不需要补0,例如14

  1、用户输入0~59之间的数字

  2、如果数字小于10,就在数字前面补0,否则不作操作

  3、用一个变量接收返回值并且输出

var num = prompt('请输入0~59之间的一个数字');
if(num<10){
var zero = '0' + num;
alert(zero);
}

或者是

var num = prompt('输入数字');
num<10?alert('0'+num):alert(num);

三元运算符与If...else语句的区别:

一般来说三元条件表达式与if...else语句有相同的表达效果,前者可以表达的后者同样也可以表达;

两者最大的不同之处在于:if...else是语句没有返回值,三元表达式有返回值;

所以在需要返回值的场合,只能使用三元表达式,而不能使用if...else语句;

在下面的代码中,console.log()方法的参数必须为表达式,所以只能使用三元表达式。

 实例:(条件运算符的嵌套)

输入一个考试成绩,判断:

如果成绩在 80 以上,则输出  优秀;

如果成绩在 60 以上,则输出  合格;

否则输出:不合格。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var score=85;
var result=score >= 80? "优秀" : (
score>=60?"合格":"不合格");
console.log (result);
</script>
</body>
</html>


运算顺序

一、,运算符

使用逗号(,)可以分割多个语句,一般可以在声明多个变量时使用

使用,运算符同时声明多个变量并赋值。

二、运算符的优先级

在JS中各种运算符的优先级是不一样的,优先级高的运算符先执行,优先级低的运算符后执行。

1、和数学中的一样,JS运算符中的优先级也会按照先乘除后加减的顺序比较。

如果优先级一样高,就从左往右算

2、除了加减乘除这样简单的运算外,还有一些比较复杂的运算符

var x = ;
var arr = [];
var y = arr.length <= || arr[] === undefined ? x : arr[];

这里面用到的运算符是比较复杂的,这五个运算符的优先级从高到低依次为:

小于等于( <= )、严格相等( === )、或( || )、三元( ?: )、等号( = )

相当于:

var y = ((arr.length <= 0) || (arr[0] === undefined)) ? x :arr[0];

三、圆括号

圆括号可以提高运算的优先级,因为圆括号的优先级是最高的,圆括号中的运算符会第一个执行

因为使用了()所以加号运算符先于乘法运算

圆括号的作用:圆括号不是运算符(不求值,只改变运算优先级),而是一种语法结构,

1、把表达式放在圆括号内提升运算优先级;2、放在函数后面,调用函数。

四、左结合和右结合

左结合

对于优先级别相同的运算符,一般情况下,总是按照从左到右的顺序,这叫做运算符的左结合

右结合

少数运算符的运算顺序是按照从右向左的顺序来计算的;

最主要的是:1、赋值运算符(=);2、三目运算符(?:)

w = x = y = z;
q = a ? b : c ? d : e ? f : g;

 等价于

w = (x = (y = z));
q = a ? b : (c ? d : (e ? f : g));

先对运算符右边进行运算

JavaScript三元运算符以及运算符顺序的更多相关文章

  1. JavaScript一元运算符、二元运算符和三元运算符

    在JavaScript中,运算符可以根据其实际操作数的个数进行分类. JavaScript中的大多数运算符是一个二元运算符(binary operator),将两个表达式合并成为一个稍复杂的表达式.譬 ...

  2. 第一百节,JavaScript表达式中的运算符

    JavaScript表达式中的运算符 学习要点: 1.什么是表达式 2.一元运算符 3.算术运算符 4.关系运算符 5.逻辑运算符 6.*位运算符 7.赋值运算符 8.其他运算符 9.运算符优先级 E ...

  3. (4)javascript的运算符以及运算符的优先级

                                    运算符的使用方法 在javascript的程序中要完成各种各样的运算,是离不开运算符的. 在javascript中,按运算符类型可以分为 ...

  4. PHP中的运算符---位运算符、递增递减运算符、三元运算符、字符串运算符、数组运算符、类型运算符、错误控制运算符

    1.位运算符 位运算符用来对整型数的指定位进行置位,如果被操作数是字符串,则对该字符串的ASCII码值进行操作. 运算类型 运算符 举例 结果 按位与 & $a & $b 将$a 与 ...

  5. JavaScript中的逗号运算符

    JavaScript逗号运算符  阅读本文的前提,明确表达式.短语.运算符.运算数这几个概念. 所谓表达式,就是一个JavaScript的“短语”,JavaScript解释器可以计算它,从而生成一个值 ...

  6. js各运算符的执行顺序

    本文原链接:https://www.sojson.com/operation/javascript.html https://www.jianshu.com/p/d569c6ca1060 JavaSc ...

  7. js之运算符其它运算符(三元运算符,逗号运算符,void运算符,typeof,delete运算符)

    Javascript支持很多其它的运算符,具体如下: 一.条件运算符(?:) 条件运算符是Javascript中唯一的三个操作数的三元运算符,有时会直接称做是“三元运算符”. 基本格式:conditi ...

  8. JavaScript赋值运算符和关系运算符

    赋值运算符:用以给变量进行赋值 最常见的赋值运算符就是等号(=),将右侧的值赋给左侧的变量(表达式x=y表示将y赋值给x) x += y // 等同于 x = x + y 还有其他更多的复合赋值运算 ...

  9. js 运算符的执行顺序

    js 运算符的执行顺序 js 运算符优先级 Operator Precedence 下表从最高(21)到最低(1)优先顺序排列 left-to-right 从左到右 / 先左后右 right-to-l ...

随机推荐

  1. Android:adb命令详解

    什么是adb adb工具即Android Debug Bridge(安卓调试桥) tools.它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互

  2. MySQL的count(*)性能怎么样?

    对于count(主键id)来说,innodb引擎会遍历整张表,把每一行的id值都取出来,返回给server层,server层判断id值不为空,就按行累加 对于count(1)来说,innodb引擎遍历 ...

  3. uwsgi + nginx 部署python项目(二)

    实现负载均衡 开启两个服务器,nginx负责分发请求到两个服务器,以减轻单个服务器负担. 配置uwsgi服务器 在a项目目录下生成uwsgi.ini文件,在b项目目录下生成uwsgi.ini文件,如何 ...

  4. Java本周总结1

    这两周我上认真的课应该就是李老师的课了/ 第一周主要跟我们讲述了java的发展史何java开发环境的搭建,带领我们走进了java,李老师的精彩讲述让我们对Java有了深刻的认识/. jdk下载安装包我 ...

  5. 粉丝福利:收藏已久的Java架构资料免费送(仅限3天)

    有段时间没跟各位粉丝分享编程资源福利了,看了下自己的百度网盘,就剩下这个我认为是比较好的Java架构师学习资料了,相信这套资料可以对你进阶高级工程师有帮助. Java架构师技术进阶路线图 架构技术进阶 ...

  6. H264 RTP包解析

    1.  预备 视频: 由一副副连续的图像构成,由于数据量比较大,因此为了节省带宽以及存储,就需要进行必要的压缩与解压缩,也就是编解码. h264裸码流: 对一个图像或者一个视频序列进行压缩,即产生码流 ...

  7. MySQL时间戳加减转日期

    一.时间戳计算前N天后N天并转化为日期,本例是将某个时间戳转为日期,并计算出与该日期前后相差7天的日期: , , , DAY)as 'after'; 输出: # before, now, after ...

  8. PCIeの数据链路层与物理层详解

    数据链路层(DLL,Data Link Layer)的主要作用是进行链路管理(Link Management).TLP错误校验.Flow Control(流控制)和Link功耗管理.不仅可以接收发送来 ...

  9. 分布式事务中的2PC和3PC

    分布式事务 分布式事务是指会涉及到操作多个数据库的事务.其实就是将对同一库事务的概念扩大到了对多个库的事务. 分布式事务中需要注意的是分布式系统中存在的一致性问题: CAP原则:在一个分布式系统中,C ...

  10. 说说 HeapSort 堆排序思想,以及个人优化方案。(老物)

    听说你要排上亿个数据之 HeapSort ? 前言 : 来来来,今天我们来说说一个用来排大量数据所用的基础比较排序吧~ 注:阅读本文学习新技能的前置要求为:了解什么是二叉树及其数组性质,如果未达到要求 ...