Day 28 28.1 JS进阶之三元运算符

发布时间 2023-04-27 16:14:28作者: Chimengmeng

JS工具之三元运算符

【1】格式

三元运算符:  条件表达式?语句1:语句2;  
let a = 10;
let b = 20;
let d = a > b? a: b
console.log(d);
  • 注释:
    • 条件运算符在执行时,首先对条件表达式进行求值,
      •         如果该值为true,则执行语句1,并返回执行结果
        
      •         如果该值为false,则执行语句2,并返回执行结果
        
      •         如果条件的表达式的求值结果是一个非布尔值,
        
      •         会将其转换为布尔值然后在运算
        

【2】意义

三运运算符可以简化大部分if体系中第二种格式if...else的书写,例如:
  • if .... else ....

    int max = 0;
        
    if (a > b) {
        max = a;
    } else {
        max = b;
    }
    console.log(max);
    
  • 三元运算符改写

    int max = a > b ? a : b;
    console.log(max);
    

【3】案例解析:

let a = 10;
let b = 20;
let c = 5;
let d = 17;

let e;
let m;

e = (e = a > 3 ? b : c, m = e < b++ ? c-- : a = 3 > b % d ? 27: 37, m++)
// e = a > 3 ? b : c // e=b=20
// m = e < b++ ? c-- : a = 3 > b % d ? 27: 37// m=a=37
// e = m++ // e= 37 m=38 
console.log(e);
console.log(c);
console.log(m);

【4】注意

【4.1】

  • 三运运算符可以简化大部分的if...else...语句的书写,但并不是所有的都可以被改写,例如:

    if (a > b) {
        console.log(a);
    } else {
        console.log(b);
    }
    
  • 这种情况三元运算符就不以改写,因为没有值的接收。

    • 三元运算符是有返回值的,我们可以接收返回值再输出,或者直接进行输出。
    //定义返回值进行接收
    int max = a > b ? a : b;
    //输出返回值
    console.log(max);
    
    //直接输出三元运算的结果
    console.log(a > b ? a : b); 
    

【4.2】

  • 三元运算符当定义了新的变量去接收返回值时,必须同时保证表达式左边和表达式右边都符合接收值数据类型的要求,不然就会出现数据溢出和精度损失的问题。

    //程序报错,因为表达式左边为int类型,右侧为double 类型,和int类型的接收值不一致
    int number = 5 > 6 ? 5.6 : 20;