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

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

语法:表达式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. MariaDB增删改

    1.MariaDB 数据类型 MariaDB数据类型可以分为数字,日期和时间以及字符串值. 使用数据类型的原则:够用就行, 尽量使用范围小的,而不用大的 常用的数据类型: 1.整数:int, bit( ...

  2. FreeMarker开发-数据模型

    FreeMarker用于处理模板的数据模型是哈希表,也就是一个树状结构的name-value对.如下: (root)|+- string="string"| +- map| || ...

  3. excel 导入导出测试点

    目前,为方便操作,很多系统都会增加批量导入导出的功能.文件导入导出一般格式都是excel.由于用户直接在excel在填写内容,无法控制填写的格 式,加上excel解析比较困难,所以一般涉及到excel ...

  4. Arm-linux-gcc-4.3.2安装步骤 (转)

    http://blog.chinaunix.net/uid-26119896-id-3302233.html 安装交叉编译工具链: 1.首先以root用户登入 2.复制arm-linux-gcc-4. ...

  5. JAVA日期时间相关库

    Java的日期时间库比较乱,同样一个Date在java.sql下定义,同时也在java.util下也定义了一遍,真不知道SUN是怎么想的. java8以后,java通过jsr310标准引入了一套符合I ...

  6. 前端导出excel文件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'p.knowlege_part_id' in 'field list'

    MyBatis中,出现Unknown column的提示是mapper.xml中的数据库字段写错了. 错误示例: XxMapper.xml中 <sql id="KnowlegeSect ...

  8. 06: django+celery+redis

    目录: 1.1 Celery介绍 1.2 celery 组件 1.3 安装相关包 与 管理命令 1.4 celery与Django执行异步任务 1.5 在django中使用计划任务功能 1.1 Cel ...

  9. windows10操作系统上使用virtualenv虚拟环境

    前提win10上已经安装了Python环境! virtualenv库的使用: 安装 如果win10上同时安装了Python2和python3的安装virtualenv时用; Python2:pip i ...

  10. ajax后台请求两种方法(js和jQuery)

    (1)js的ajax var xmlHttp; if(window.XMLHttpRequest){ xmlHttp=new XMLHttpRequest(); }else{ xmlHttp=new ...