你还在用if做判断吗,也试试 '?'

199 阅读1分钟

我正在参与掘金创作者训练营第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