JS - 逻辑与、非

&&逻辑与

对于布尔值的情况:必须都为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'
发布了93 篇原创文章 · 获赞 20 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/sinat_33184880/article/details/103534101
今日推荐