• Почему возникает ошибка "FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory"?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Ну, память кончилась. Потому что... так, представьте, что обрабатывается последний элемент вашего массива, и доходит очередь до вот этого:

    array[i+1]=true;

    Размер вашего массива увеличится, последний элемент перестанет быть последним, и цикл, вместо того, чтобы завершится, уйдёт на следующую итерацию. А там опять array[i+1]=true; (или array[i+1]=false;, в зависимости от условия) - массив снова увеличился, опять цикл не завершился, ну и так далее - массив будет жиреть до тех пор, пока станет невозможно выделить ему ещё памяти.

    UPD. Я так понял, речь об этой задаче.
    Решается вот прям совсем просто.

    Конечно, при использовании методов массива:

    const ops = {
      OR: arr => arr.some(Boolean),
      AND: arr => arr.every(Boolean),
      XOR: arr => !!arr.reduce((p, c) => p ^ c, 0),
    };
    
    const logicalCalc = (arr, op) => ops[op](arr);

    В противном случае код может серьёзно опухнуть:

    const ops = {
      OR(arr) {
        for (const n of arr) if (n) {
          return true;
        }
        return false;
      },
      AND(arr) {
        for (const n of arr) if (!n) {
          return false;
        }
        return true;
      },
      XOR(arr) {
        let result = 0;
        for (const n of arr) {
          result ^= n;
        }
        return !!result;
      },
    };

    Ответ написан
    Комментировать
  • Как называется это?

    Stalker_RED
    @Stalker_RED
    function Охранник() {
      this.name = "Штирлиц";
      this.password = "У вас продается славянский шкаф?";
    }
    
    Охранник.prototype.проверяй = function(name, password) {
      return this.name == name && this.password == password;
    };
    
    let Василий = new Охранник()
    Василий.проверяй('Штирлиц', 'У вас продается славянский шкаф?')

    P.S.: может стоит купить словарь?
    Ответ написан
    Комментировать
  • Как называется это?

    @McBernar
    Все объекты, созданные конструктором Sleight будут иметь метод (функцию) authenticate.
    Вот такое вот странное JS-ООП. К слову, в es6 добавлен нормальный синтаксический сахар, чтобы забыть про прототипное наследование.
    Ответ написан
    4 комментария