ReferenceError:使用“ + =”时分配中的左侧无效

时间:2019-03-01 09:33:11

标签: javascript variable-assignment referenceerror

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

  

ReferenceError:分配中的左侧无效

此部分: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;
};

2 个答案:

答案 0 :(得分:1)

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

连接项目

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;
  };

答案 1 :(得分:0)

a += b做两件事:

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

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

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

第一个+=很好,第二个有问题。第二个尝试分配回它不能的表达式reg += "\\"

您只是想在那里+

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

我建议您阅读一本基本的JavaScript书籍和/或来自知名来源的教程。如果您不确定操作员的工作方式,建议您on MDN进行查找。