|| && 的用法,不只是判断的作用,还可以判断值是否为空的情况
我们平常使用的 &&
||
一般只是用于判断 true
或 false
,其它这两个运算符还有其它作用,它是有返回值的。
&&
的返回值是:最后一个为 ture
的值
||
的返回值是:第一个为 true
的值
一、功能说明
1. &&
- 两边条件都为
true
时,结果才为true
; - 如果有一个为
false
,结果就为false
; - 当第一个条件为
false
时,就不再判断后面的条件
2. ||
- 只要有一个条件为
true
时,结果就为true
; - 当两个条件都为
false
时,结果才为false
; - 当一个条件为
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
就返回后面的值
其实 ES6 2020
已经推出了类似 Swift
的用法,但好像目前支持的很少。
具体可以看这里:
https://es6.ruanyifeng.com/#docs/object#Null-%E5%88%A4%E6%96%AD%E8%BF%90%E7%AE%97%E7%AC%A6
let str = value ?? 'second';
// 相当于
let str = value ? value : 'second'
之前一直想不出 js
中如何能实现这样的效果,现在可以了。直接使用 ||
即可。因为它的作用是返回第一个为 true
的值,如果 value
有值并且不为 0
undefined
null
等,就返回 value
,否则返回后面的值。
value ? value : 'second'
// 返回值为 "second"
value || 'second'
// 返回值为 "second"
在很多使用场景中都会用到这个