马黑黑 发表于 2022-1-15 14:16

JS三元运算符

三元运算是很有意思的,但在具体了解它之前,先看看 if ... else ... 语句。我们假定现在在斟酌如何给 a 和 b 两位员工发红包,我们的依据是贡献的大小:

如果 a 大于 b,给 a 加钱钱,500块吧;反之,给 b 加钱钱,当然也是加500块。

财务总监用 JS 解决这个问题:

var a = 2.1; // 员工 a 的贡献系数
var b = 2.1; // 员工 b 的贡献系数
var a_hb = 2000; //员工a的基础红包
var b_hb = 2000; //员工b的基础红包

if (a>b) {
    a_hb = a_hb + 500;
}else{
    b_hb = b_hb + 500;
}



用人话解释 if ... else ...代码:如果 a>b 成立,则 a_hb 的值在自身值基础上加500,反之,如果 a>b 不成立,则 b_hb 的值在自身值基础上加500。也就是说,谁的贡献系数大,这500元钱就给谁。相等的情形呢?归b,这是题外话不提。

if ... else ... 语句容易阅读,也方便代码修改,但略显啰嗦,有一种替代的方法来表达,很简洁,它就是三元运算符。试看:

a>b ? a_hb = a_hb + 500 : b_hb = b_hb + 500;

三元运算符用一个问号和一个冒号组成表达式。问号之前是条件语句,问号就是问这个条件是否成立,如果成立,执行问号后面的语句,反之如果不成立,就执行冒号后面的语句。一行代码完成人家五行代码的工作,太精巧了。

三元运算符的作用在于让代码更简洁,仅此而已。

红影 发表于 2022-1-15 14:51

这个判断语句有意思,让我想到Excel也有类似的功能{:4_187:}

红影 发表于 2022-1-15 14:53

这个只有大于号么,有没有大于等于号≥?

红影 发表于 2022-1-15 14:54

var a = 2.1; 为什么是2.1 这个数字有特定含义么?

马黑黑 发表于 2022-1-15 15:44

红影 发表于 2022-1-15 14:54
var a = 2.1; 为什么是2.1 这个数字有特定含义么?

2.1 不是特定的,你想给它赋值多少就多少

马黑黑 发表于 2022-1-15 15:45

红影 发表于 2022-1-15 14:53
这个只有大于号么,有没有大于等于号≥?

可以有。但不是这样表达,JS里要这样:

a >= b

马黑黑 发表于 2022-1-15 15:46

红影 发表于 2022-1-15 14:51
这个判断语句有意思,让我想到Excel也有类似的功能

对。很多高端的应用都离不开判断,可以说判断是程序的基本。

红影 发表于 2022-1-15 20:17

马黑黑 发表于 2022-1-15 15:44
2.1 不是特定的,你想给它赋值多少就多少
但是必须有这个赋值的过程,是么?可以是字母或别的什么符号么。

红影 发表于 2022-1-15 20:18

马黑黑 发表于 2022-1-15 15:45
可以有。但不是这样表达,JS里要这样:

a >= b

哦哦对,你介绍过大于等于符号的,我前面忘记了。
用了这个符合,当两者相等的时候,还是加给a的吧。

红影 发表于 2022-1-15 20:19

马黑黑 发表于 2022-1-15 15:46
对。很多高端的应用都离不开判断,可以说判断是程序的基本。

能利用计算机自身强大计算功能的语句都特别好。

马黑黑 发表于 2022-1-15 20:54

红影 发表于 2022-1-15 20:18
哦哦对,你介绍过大于等于符号的,我前面忘记了。
用了这个符合,当两者相等的时候,还是加给a的吧。

是的,条件成立嘛

马黑黑 发表于 2022-1-15 20:55

红影 发表于 2022-1-15 20:17
但是必须有这个赋值的过程,是么?可以是字母或别的什么符号么。

声明是不赋值也行,后面运算中有赋值就好,不然返回未定义项会报错。根据需要来,这里给它们赋值是为了作比较。

小辣椒 发表于 2022-1-15 22:28

三元运算符的作用在于让代码更简洁,仅此而已。

黑黑一句话,小辣椒要想半天的{:4_203:}

红影 发表于 2022-1-15 23:58

马黑黑 发表于 2022-1-15 20:54
是的,条件成立嘛

感觉这个三元运算是个很聪明的设计,代码看起来更简洁高效。

红影 发表于 2022-1-15 23:59

马黑黑 发表于 2022-1-15 20:55
声明是不赋值也行,后面运算中有赋值就好,不然返回未定义项会报错。根据需要来,这里给它们赋值是为了作 ...

“返回未定义项会报错”。
嗯,记下了。

马黑黑 发表于 2022-1-16 08:22

红影 发表于 2022-1-15 23:59
“返回未定义项会报错”。
嗯,记下了。

JS很娇嫩

马黑黑 发表于 2022-1-16 08:24

红影 发表于 2022-1-15 23:58
感觉这个三元运算是个很聪明的设计,代码看起来更简洁高效。

我再PHP中大量使用,在JS中用的少

马黑黑 发表于 2022-1-16 08:40

小辣椒 发表于 2022-1-15 22:28
三元运算符的作用在于让代码更简洁,仅此而已。

黑黑一句话,小辣椒要想半天的

你可以先不理这些

加林森 发表于 2022-1-16 13:42

这个得好好学习了。

红影 发表于 2022-1-16 13:44

马黑黑 发表于 2022-1-16 08:22
JS很娇嫩

这个形容词用得有趣{:4_189:}
页: [1] 2
查看完整版本: JS三元运算符