运算符妙用

233 阅读2分钟

返回赋值表达式

参考:www.zhihu.com/question/51…

  • 返回一个赋值表达式时,返回的是赋值等号右边的值
let a = 10;
let b = 20;
// 下面两句相等
let ff = () => a=6
let ff = () => { return (a = 6) }
log(ff())  // 6  表示ff函数返回的是等号右边的值6
log(a)  // 6  表示a的值为6

逻辑运算返回

// 运算规则
a() && b() :如果执行a()后返回true,则执行b()并返回b的值;如果执行a()后返回false,则整个表达式返回a()的值,b()不执行;
a() || b() :如果执行a()后返回true,则整个表达式返回a()的值,b()不执行;如果执行a()后返回false,则执行b()并返回b()的值;
&& 优先级高于 ||

1、只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。

2、只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

3、只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;

4、只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
5. &&运算,如果都是true,则返回最后一个表达式的值(是值不是布尔值)
6. || 运算,如果都是false,则返回最后一个表达式的值(是值不是布尔值)

1. 逻辑与返回运算

// 示例1:
let a = 10;
let b = 20;

function fun () {
    return (a = 5) && b && 30
}
console.log(fun())    // 30
console.log(a);        //5

2. 逻辑或返回运算

let a = 10;
let b = 20;
function fun () {
    return (a = 6) || b || 30
}
console.log(fun())    // 6
console.log(a);        // 6

三目运算

1. 三目运算赋值用法

2. 三目运算作为执行操作

// 示例1:
let a = 10;
let b = 20;
// 下面这个表达式整体的返回值相当于最终 return b=30
a > 0 ? b = 30 : null
console.log(b);    // 30

3. 三目运算作为返回值

可选链

const adventurer = {
  name: 'Alice',
  cat: {
    name: {
    	dd: 'hello'
    }
  },
  fun: function(){
  	console.log(1111)
    return 3
  }
};

// 如果能取到值,返回值,取不到,中间也不会报错,直接返回undefined
console.log(adventurer.xxxxx?.name?.yyyy);