有代码:
function search(list, q){
var result = {};
for(let id in list)(
(!q.id || (id == q.id)) &&
(!q.name || (list[id].name.search(q.name) > -1)) &&
result[id] = list[id]
);
return result;
}
我收到此错误:
Uncaught ReferenceError: Invalid left-hand side in assignment script.js:4
为什么"&&"是错的?
答案 0 :(得分:4)
问题在于赋值运算符=
是一个低优先级运算符,所以它的解释方式是你不期望的。如果你把最后一个表达式放在括号中,它就可以工作:
for(let id in list)(
(!q.id || (id == q.id)) &&
(!q.name || (list[id].name.search(q.name) > -1)) &&
(result[id] = list[id])
);
答案 1 :(得分:0)
您的代码中似乎存在拼写错误:
result[id] = list[id]
应为result[id] == list[id]
或result[id] === list[id]
(如果您正在进行严格的比较)