&&、|| 是逻辑运算符,一般用作条件判断,但很多情况还可以用在赋值运算,使用起来很方便。
举个例子
var a = a || {};
var b = 0 || 2;
// 结果
// a => {}
// b => 2
再看个例子
var a = 0 && 1;
var b = 1 && 2 && 3;
// 结果
// a => 0
// b => 3
再来一个稍微难一点的
var bean = {
tv: {
name: '江西卫视',
channel: 'jxtv',
id: 'jxtv'
},
acg: {
name: '哔哩哔哩动画',
channel: 'bilibili',
id: 'bilibili'
}
};
var type = 'tv';
var route = bean[type] && (bean[type]['channel'] || bean[type].id) || 'nothing';
// 结果
// route => jxtv
如果把上面的 type 改为不存在的对象属性,则结果是 nothing
总结:
1、逻辑与 && 在赋值运算中遇到条件不成立直接返回该结果,否则返回最后一个结果为真的值
2、逻辑或 || 在赋值运算中只要条件成立则直接返回,否则返回后者