1

我们平常使用的 && || 一般只是用于判断 truefalse,其它这两个运算符还有其它作用,它是有返回值的。

&& 的返回值是:最后一个为 ture 的值
|| 的返回值是:第一个为 true 的值

一、功能说明

1. &&

  1. 两边条件都为 true 时,结果才为 true
  2. 如果有一个为 false,结果就为 false
  3. 当第一个条件为 false 时,就不再判断后面的条件

2. ||

  1. 只要有一个条件为 true 时,结果就为 true
  2. 当两个条件都为 false 时,结果才为 false
  3. 当一个条件为 true 时,后面的条件不再判断

二、使用场景

在很多返回值控制方面可以使用这两个符号实现很实用的效果

1. 封装 ajax 请求

封装 ajax 请求中,方法作为参数时,可以传递有参数或无参数的方法,如果是有参数的,就在 success 中执行带参数的方法,如果没有就执行无参数的。

function getData (url, queryData, onSuccess, onError, complete) {
    $.ajax({
        url: url,
        method: 'GET',
        dataType: 'json',
        data: queryData,
        beforeSend: function (request) {},
        success: function (res) {
            onSuccess && onSuccess(res);
        }
    })
}

getData('/user/register', {
    name: 'Kyle',
    age: 30
}, res => {
    // 这里是带参数的成功返回方法
    // 在上面的方法中就会执行 onSuccess(res) 这个入口
})

2. 简化 value ? value : 'default value'

在 Swift 中有个很实用的运算符 ?? 它的作用是:
如果前面的值不为 nil(就是空的意思) 就返回前面的值,如果为 nil 就返回后面的值

let str = value ?? 'second';
// 相当于
let str = value ? value : 'second'

之前一直想不出 js 中如何能实现这样的效果,现在可以了。直接使用 || 即可。因为它的作用是返回第一个为 true 的值,如果 value 有值并且不为 0 undefined null 等,就返回 value,否则返回后面的值。

value ? value : 'second'
// 返回值为 "second"

value || 'second'
// 返回值为 "second"

在很多使用场景中都会用到这个


KyleBing
659 声望18 粉丝

前端,喜欢 Javascript scss,喜欢做一些实用的小工具