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

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

语法:表达式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. shell基础命令

    什么是脚本? 脚本简单地说就是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的(如可以用记事本打开查看.编辑). 常见的脚本: JavaScript(JS,前端),VBScript, AS ...

  2. dotnet core排序异常,本地测试和linux上结果不一致

    根据汉字排序,本地测试结构正常,发到docker之后,发现汉字升序降序和本地相反,检查代码后,没找到任何可能出现问题的点. 然后去翻文档:字符串比较操作 看到了这一句,会区分区域性 然后猜测应该是do ...

  3. 《React+Redux前端开发实战》笔记1:不涉及React项目构建的Hello World案例

    本小节实现一个不涉及项目构建的Hello World. [React的第一个Hello World网页] 源码地址:https://jsfiddle.net/allan91/2h1sf0ky/8/ & ...

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

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

  5. [转帖]kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

    kafka入门:简介.使用场景.设计原理.主要配置及集群搭建 http://www.aboutyun.com/thread-9341-1-1.html 还没看完 感觉挺好的. 问题导读: 1.zook ...

  6. docker配置文件不生效

    1.查看docker配置文件位置 systemctl status docker.service 2.修改docker配置文件 vim /lib/systemd/system/docker.servi ...

  7. arm链接脚本

    一. 为什么需要链接脚本 1.1. 从源码到可执行程序(主要有三个步骤:预编译.编译.链接) 1.1.1. 预编译 a. 预编译器执行.譬如C中的宏定义就是由预编译器处理,注释等也是由预编译器处理的. ...

  8. PHP之简单工厂模式(二)

    定义 简单工厂模式,通过定义一个工厂类,负责完成类实例的创建,根据参数的不同返回不同的类实例.对外部来讲,只需传入一个正常的参数就可以获得想要的对象,而不必需要具体创建细节.创建类实例的方法通常为静态 ...

  9. oracle管理基础知识

    1.oracle的安装 win下 linux下 2.内存和后台进程=实例 为何将oracle做的如此复杂呢 1.内存: --提高查询速度 --提升处理数据的速度 2.后台进程 --为了完成特定的服务, ...

  10. DRF之Jwt 实现自定义和DRF小组件及django-filter插件的使用

    一.DRF之Jwt 实现自定义 二.DRF(过滤,排序,分页)组件 三.Django-filter插件的使用和自定义 """ 1.drf-jwt手动签发与校验 :只是做t ...