我正在参与掘金创作者训练营第5期,点击了解活动详情
前言
- 之前写判断大多简单的都用if做判断,今天读到一篇文章也可以用
?来做判断,接下来看看它如何实现
补充
- 常见的布尔转换,0/“”/null/undefined/NaN都会转换为false,也称它们为“假值”(falsy)
- 相反的其它值就为“真值”(truely)
if运行
- 当
if(){},()中的值为真值就会执行花括号{}中的内容 - 相反如果()中的值为假值就不会执行{}中的内容
举两个例子
if(1){
alert("你真美") //弹窗你真美
}
if(0){
alert("看不见我") // 无弹窗
}
其中多个判断可用else if(){}其原理和if一致,最后如果这些判断条件都不按满足你想让它执行的语句可以选用else{}
三元运算符
- 他有点类似于这样的语句
let result = 0
if(condition){
result = value1
}
else{
result = value2
}
与普通if ……else语句的稍有不同的是,它可以返回一个值给到一个变量
let result = condition ? value1 : value2;
- 计算条件是condition,如果condition为真,则返回
value1,否则返回value2。
举个例子
let accessAllowed = (age > 18) ? true : false;
- 这里的括号可以省略,因为?的优先级低于>
- 这个语句还可以简写成
let accessAllowed = age > 18 - "?"也可以是多个
let age = prompt('age?', 18);
let message = (age < 3) ? 'Hi, baby!' : (age < 18) ? 'Hello!' : (age < 100) ? 'Greetings!' : 'What an unusual age!'; alert( message );
等同于
let age = prompt('age?', 18);
let message = ‘’
if (age < 3) {
message = 'Hi, baby!';
}
else if (age < 18) {
message = 'Hello!';
} else if (age < 100) {
message = 'Greetings!';
} else {
message = 'What an unusual age!';
}
- 虽然三元运算符书写简单,但相较于普通的if……else语句可读性较差,因此如果是单纯做判断还是不要使用这个。
- 因为我们的眼睛垂直扫描代码。所以,跨越几行的代码块比长而水平的代码更易于理解。
总结: 问号
?的作用是根据条件返回其中一个值;当需要执行不同的代码分支时,请使用if。