为什么我得到"分配中的左侧无效"?

时间:2017-12-01 03:30:58

标签: javascript angularjs ecmascript-6

有代码:

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

为什么"&&"是错的?

2 个答案:

答案 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](如果您正在进行严格的比较)

相关问题