JavaScript中或运算符 “||“ 和与运算符 “&&“ 的运算规则
//state的数据是用axios请求的goodsList(state) {//state.searchList.goodList如果服务器数据回来了,是一个数组//假如网络不给力|没有网state.searchList.goodList应该返回的是undefined//计算新的属性的属性值至少给人家来一个数组return state.searchList.goodsList || [];},在v
//state的数据是用axios请求的
goodsList(state) {
//state.searchList.goodList如果服务器数据回来了,是一个数组
//假如网络不给力|没有网state.searchList.goodList应该返回的是undefined
//计算新的属性的属性值至少给人家来一个数组
return state.searchList.goodsList || [];
},
在vue中使用vuex开发中经常可以见到这样的代码,
return state.searchList.goodsList || [];
这是为了防止有组件使用v-for遍历这个数组时,而数组的值还没请求到,出现报错的情况。
因为如果不加后边的空数组,当数组的值没有请求到时,state.searchList.goodsList是一个undefined,那么使用v-for遍历一个undefined则会报错。加上 [] 后则会返回一个空数组而避免报错。
或运算
或运算的规则是:一真则真,全假为假
但是如果我们将或运算用与函数的返回值计算时,函数返回的会是或运算中的哪一个元素呢。
//一真一假
function fun() {
return 1 || 0;
}
console.log(fun()) // 1
function fun1() {
return 0 || 1;
}
console.log(fun1()) // 1
//两个都为真
function fun2() {
return 1 || 2;
}
console.log(fun2()) // 1
function fun3() {
return 2 || 1;
}
console.log(fun3()) // 2
//两个都为假
function fun4() {
return null || false;
}
console.log(fun4()) // false
function fun5() {
return false || null;
}
console.log(fun5()) // null
可以看到,当返回值为一真一假时,总是返回为真的元素
返回值为两真时,总是返回或运算前的元素
返回值为两假时,总是返回或运算后的元素
经过思考,原因如下
或运算符的判定规则是,当遇到一个值为真的元素时,不管后边的元素是真是假,该表达式总是为真,所以会直接将这个为真的元素返回。
而如果当前元素为假,会继续往下判断,如果遇到值为真的元素就返回这个元素,如果没有值为真的元素就返回最后一个元素
与运算
与运算的规则:一假则假,全真才真
//一真一假
function fun() {
return 1 && 0;
}
console.log(fun()) // 0
function fun1() {
return 0 && 1;
}
console.log(fun1()) // 0
//两个都为真
function fun2() {
return 1 && 2;
}
console.log(fun2()) // 2
function fun3() {
return 2 && 1;
}
console.log(fun3()) // 1
//两个都为假
function fun4() {
return null && false;
}
console.log(fun4()) // null
function fun5() {
return false && null;
}
console.log(fun5()) // false
道理同或运算一样,只不过与运算是碰到值为假的元素直接返回,遇到值为真的元素就会继续向下判断,如果前边的都为真,就返回最后一个元素。
更多推荐
所有评论(0)