为什么我收到“作业中的左侧无效”?

Tur*_*Abu 5 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;
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Uncaught ReferenceError: Invalid left-hand side in assignment    script.js:4
Run Code Online (Sandbox Code Playgroud)

为什么“ &&”是错误的?

Poi*_*nty 5

问题在于赋值运算符,=是一个低优先级的运算符,因此它以您不期望的方式被解释。如果将最后一个表达式放在括号中,它将起作用:

  for(let id in list)(
    (!q.id    || (id == q.id)) &&
    (!q.name  || (list[id].name.search(q.name) > -1)) &&
    (result[id] = list[id])
  );
Run Code Online (Sandbox Code Playgroud)