ReferenceError: Invalid left-hand side in assignment while using "+="

ReferenceError: Invalid left-hand side in assignment while using "+="

我正在尝试解决 Codewars 上的以下问题:Strip Comments。 我认为这是非常合法的代码,但我收到以下错误:

ReferenceError: Invalid left-hand side in assignment

对于这部分:reg += "\" += item += "|";(第 6 行)

这是我的代码:

function solution(input, markers) {
  var arr = input.split("\n");
  var reg = "(";
  markers.forEach(function(item, index){
  if (!(index == markers.length)){
  reg += "\" += item += "|";
  } else {reg += "\" += item += ")";}
  })
  reg += ".*";
  var regex = new RegExp(reg);
  arr.forEach(function(item){
  item.replace(regex, "");
  })
  var ret = arr.toString();
  ret.replace(/\,/g, "\n");
  return ret;
};

+= 不能在字符串之间使用。使用 +

连接项目

function solution(input, markers) {
    var arr = input.split("\n");
    var reg = "(";
    markers.forEach(function(item, index){
    if (!(index == markers.length)){
    reg += "\" + item + "|";
    } else {reg += "\" + item + ")";}
    })
    reg += ".*";
    var regex = new RegExp(reg);
    arr.forEach(function(item){
    item.replace(regex, "");
    })
    var ret = arr.toString();
    ret.replace(/\,/g, "\n");
    return ret;
  };

a += b 做了两件事:

  1. 它将左操作数 (a) 与其右操作数 (b) 组合在一起。 (对于字符串,"combines" 表示 "concatenates" [连接在一起。对于数字,它表示 "adds"。)
  2. 它将 (1) 的结果放入其左操作数 (a)。

这意味着它左边的内容必须是您可以更改其值的内容。您不能更改字符串文字的值,它不可分配。所以问题是她:

reg += "\" += item += "|";
// ---------^^------^^

第一个+=没问题,后两个有问题。第二个尝试重新分配给表达式 reg += "\",但它不能。

你只是想要 + 那里:

reg += "\" + item + "|";
// ---------^------^

我建议阅读来自信誉良好的来源的基础 JavaScript 书籍 and/or 教程。如果您不确定操作员做什么,我建议您查找 on MDN.