js一行If ... else ... else if语句

简介: js一行If ... else ... else if语句

我知道你可以通过做var variable = (condition) ? (true block) : (else block)来设置一行if / else语句的var variable = (condition) ? (true block) : (else block) var variable = (condition) ? (true block) : (else block) ,但我想知道是否有办法在其中放入else if语句。 任何建议,将不胜感激,谢谢大家!

当然,你可以做嵌套的三元操作符,但它们很难阅读。

var variable = (condition) ? (true block) : ((condition2) ? (true block2) : (else block2))

TL;博士

是的,你可以...如果一个然后一个,否则如果B然后如果C然后C(B),否则B,否则空

a ? a : (b ? (c ? c(b) : b) : null)

a

? a

: b

? c

? c(b)

: b

: null

更长的版本

三元运算符?:用作内联if-else是正确的关联 。 总之这意味着最右边的? 获得第一喂,它需要只有一个操作数最接近的左侧两个 ,有: ,在右边。

实际上,请考虑以下声明(与上述相同):image.png

最右边的? 首先得到喂养,所以找到它及其周围的三个参数,并连续向左扩展到另一个?

image.pngimage.png

result: a ? a : (b ? (c ? c(b) : b) : null) `

这就是计算机如何读取它:

术语a被读取。

节点: a

非终端? 被阅读。

节点: a ?

术语a被读取。

节点: a ? a a ? a

非终结符:被读取。

节点: a ? a : a ? a :

术语b被读取。

节点: a ? a : b a ? a : b

非终端? 被读取,触发右相关性规则。 相关性决定:

节点: a ? a : (b ? a ? a : (b ?

术语c被读取。

节点: a ? a : (b ? c a ? a : (b ? c

非终端? 被读取,重新应用右联合性规则。

节点: a ? a : (b ? (c ? a ? a : (b ? (c ?

术语c(b)被读取。

节点: a ? a : (b ? (c ? c(b) a ? a : (b ? (c ? c(b)

非终结符:被读取。

节点: a ? a : (b ? (c ? c(b) : a ? a : (b ? (c ? c(b) :

术语b被读取。

节点: a ? a : (b ? (c ? c(b) : b a ? a : (b ? (c ? c(b) : b

非终结符:被读取。 三元运算符?:从前一个范围满足,范围已关闭。

节点: a ? a : (b ? (c ? c(b) : b) : a ? a : (b ? (c ? c(b) : b) :

术语null被读取。

节点: a ? a : (b ? (c ? c(b) : b) : null a ? a : (b ? (c ? c(b) : b) : null

没有令牌可读。 关闭剩余的左括号。

结果是: a ? a : (b ? (c ? c(b) : b) : null)a ? a : (b ? (c ? c(b) : b) : null)

更好的可读性

从上面的丑陋的上线者可能(并应该)为了可读性而重写为:

(请注意,压痕隐式地定义正确的关闭装置,如括号()做的。)

image.png

例如

image.png

更多阅读

Mozilla:JavaScript条件运算符

Wiki:运算符关联

奖金:逻辑运算符

image.png

在这个例子中使用逻辑运算符是丑陋的错误,但这是他们闪耀的地方…

“无结合”

image.png

短路评估

image.png

逻辑运算符

无结合

短路评估

image.png

目录
相关文章
|
JavaScript 前端开发
Javascript用数据替换if或switch的解决方案
Javascript用数据替换if或switch的解决方案
95 0
|
9月前
|
JavaScript 前端开发
【Javascript保姆级教程】if判断语句的三种形式
【Javascript保姆级教程】if判断语句的三种形式
196 0
|
JavaScript
清除JS定时器setInterval方法防止if条件语句判断无效的解决方案
清除JS定时器setInterval方法防止if条件语句判断无效的解决方案
163 0
|
人工智能 JavaScript 前端开发
JS中一些判空操作,判null,判undefined操作和简化操作和if操作
JS中一些判空操作,判null,判undefined操作和简化操作和if操作
|
JavaScript
js 如何if( a== 1 && a == 2 && a==3)
js 如何if( a== 1 && a == 2 && a==3)
157 0
|
JavaScript 前端开发
JavaScript语言基础之if语句
if语句是JavaScript中最基本的条件语句,用于根据条件执行不同的代码块。本文将介绍if语句的语法、用法和一些实际应用场景。
|
前端开发 JavaScript
初学JavaScript&输出语句
前端三大件分别为:HTML、CSS、JavaScript。其中最重要的当属JavaScript。 虽然现在开发通常使用框架,但是这些基础的才最重要的,就像一座高楼不能没有稳固的地基一样。打好基础,走遍天下都不怕。JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。 即JavaScript 是一种编程语言,主要参与构建 Web 前端应用。
初学JavaScript&输出语句
|
JavaScript 前端开发
JavaScript的break和continue语句的使用和区别
JavaScript的break和continue语句的使用和区别 JavaScript中break 和 continue都是用来控制循环结构,即用在for循环和while循环中。区别在于: break 语句用于跳出循环。 continue 用于跳过循环中的一个迭代。 1.break语句 break语句会终止循环并且跳出循环 for(var j=0;j<5;j++){ if(j==3){ break; } console.log(j);//0 1 2 }
|
JavaScript 前端开发
JavaScript的流程控制之if条件语句和switch选择语句(一)
JavaScript的流程控制(一) 接下来我么来讲一下JavaScript的流程控制,JavaScript中的流程控制主要包括条件语句和循环语句。这篇博客主要讲条件语句。说到条件语句主要包括if条件语句和switch选择语句两种。 1.if语句 //语法: // if(判断的条件){ // 条件成立时的执行代码 // } //if语句当条件不成立时,不执行任何的代码 var oDate=new Date(); console.log(oDate.getDay()); if(oDate.getDay()==6){
|
JavaScript 前端开发 Shell
开发中切忌使用的JavaScript语句 —— with语句 和 eval语句
开发中切忌使用的JavaScript语句 —— with语句 和 eval语句
170 0

热门文章

最新文章