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

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

语法:表达式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. JS函数的基础部分

    JS函数的基础部分 JS函数的部分: 先看下一段的代码: window.onload = function(){  function test(){   alert("123"); ...

  2. Jmeter---BeanShell 常用的 vars, get, props, put ,log用法

    BeanShell介 BeanShell是用Java写成的,一个小型的.免费的.可以下载的.嵌入式的Java源代码解释器,具有对象脚本语言特性.本篇只记录一下基本的使用.有以下五个组件: Beansh ...

  3. 【SD系列】SAP SD凭证处理被批次处理冻结

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SD系列]SAP SD凭证处理被批次处理冻结 ...

  4. 【MM系列】SAP MM模块-如何修改物料的移动平均价

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-如何修改物料的移动 ...

  5. 【ABAP系列】SAP ABAP 关于四舍五入算法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 关于四舍五入算 ...

  6. ubuntu 环境配置

    安装包准备 下载 410以上显卡驱动 文件名: NVIDIA-Linux-x86_64-410.66.run 下载 cuda 10.0 选择 CUDA Toolkit 10.0 (Sept 2018) ...

  7. Matlab与C++混合编程 2--在C++中使用Matlab固有命令

    直接在Visual Studio中运行Matlab固有命令 #include <iostream> #include"engine.h" // 添加matlab引擎库的 ...

  8. MySql日期加天数,小时,分钟...得到新的时间

    在当前的日期上加三天,天数随便改: SELECT date_add(CURRENT_DATE(), interval 3 day); 在指定的日期上加三天: SELECT date_add('2014 ...

  9. 通过Spark Streaming处理交易数据

    Apache Spark 是加州大学伯克利分校的 AMPLabs 开发的开源分布式轻量级通用计算框架. 由于 Spark 基于内存设计,使得它拥有比 Hadoop 更高的性能(极端情况下可以达到 10 ...

  10. C#基础篇之C#和 .Net框架的概念和运行原理

    一.微软平台的发展史 二..Net框架包含的东西 1.名词解释 BCL:基类库(Base Class Library)系统和底层提供的最基本的类库 CLR:公共语言运行时(Common Languag ...