ReferenceError: Неверная левая часть в назначении при использовании «+ =» - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь решить следующие ката на Codewars: Комментарии к полосе .Я думаю, что это довольно правильный код, но я получаю следующую ошибку:

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 голосов
/ 01 марта 2019

a += b делает две вещи:

  1. Объединяет свой левый операнд (a) с правым (b).(Для строк «объединяет» означает «объединяет» [объединяет]. Для чисел это означает «добавляет».)
  2. Он помещает результат (1) в свой левый операнд (a).

Это означает, что то, что слева от него, должно быть чем-то, что вы можете изменить значение.Вы не можете изменить значение строкового литерала, он не может быть назначен.Так что проблема в ней:

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

Первый += там хорошо, а вторые два проблемные.Второй пытается вернуть обратно выражение reg += "\\", чего не может.

Вы просто хотели + там:

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

Я предлагаю работать черезбазовая книга по JavaScript и / или учебные пособия из авторитетных источников.Если вы не уверены, что делает оператор, я советую посмотреть на в MDN .

0 голосов
/ 01 марта 2019

+= нельзя использовать между строками.Объединить элементы, используя +

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;
  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...