&&逻辑与
对于布尔值的情况:必须都为ture才返回true,否则返回false
true && true // true
true && false // false
对于不是布尔值的情况:第一个操作数等于0、null、undefined、false、空字符串时,返回它自身(不执行后续的操作数),否则返回第二个操作数
0 && {} // 0
null && {} // null
undefined && {} // undefined
false && {} // false
'' && {} // ''
1 && 1 // 1
null && {a: 1} // {a: 1}
undefined && [1] // [1]
false && {a: 1} // {a: 1}
'1' && '2' // '2'
使用场景:当对象存在某个值时,进行参数传递
var options = {}
var params = (options.data && options.data.params) || ''
// 等价于
var params
if (!options.data) {
params = options.data.params
}
else {
params = ''
}
axios请求拦截器给headers添加token
axios.interceptors.request.use(
config => {
const token = store.state.token
token && (config.headers.Authorization = token)
return config
},
error => {
return Promise.error(error)
}
)
||逻辑或
对于布尔值的情况:其中一个操作数是true,则返回true;两个操作数都是false,则返回false
false || true // true
false || false // false
对于不是布尔值的情况:第一个操作数不等于0、null、undefined、false、空字符串时,返回它自身,否则返回第二个操作数
0 || {} // {}
null || {} // {}
undefined || {} // {}
false || {} // {}
'' || {} // {}
1 || 2 // 1
{a: 1} || {} // {a: 1}
[1] || [] // [1]
'1' || '' // '1'