Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   При решении задачи возникла проблема. Не могу создать цепочку вызовов в консоле. (https://javascript.ru/forum/misc/78094-pri-reshenii-zadachi-voznikla-problema-ne-mogu-sozdat-cepochku-vyzovov-v-konsole.html)

Piterom 25.07.2019 15:35

При решении задачи возникла проблема. Не могу создать цепочку вызовов в консоле.
 
Есть задание создать модуль калькулятор. Стандартные действия (прибавить, разделить и т.д.)
Конечное значение округлить до 2х знаков после точки.
Значение должно храниться в обычной переменной не в this.

При одиночном вызове все в порядке, но при вызове функций в цепочку появляется ошибка.


let calc = (function () {

let value = 0;

function setValue(val) {
return parseFloat((value = val).toFixed(2));
}

function plusVal(val) {
return parseFloat((value += val).toFixed(2));
}

function multiply(val) {
return parseFloat((value *= val).toFixed(2));
}

function divVal(val) {
return parseFloat((value -= val).toFixed(2));
}

function subtraction(val) {
return parseFloat((value /= val).toFixed(2));
}

return {
setValue,
plusVal,
multiply,
divVal,
subtraction
}

})();

Piterom 25.07.2019 16:35

Да, именно так. Как это правильно сделать? Читал статьи, еще больше запутался.

SuperZen 25.07.2019 17:06

let calc = (function () {

  let value = 0;

  function setValue(val) {
    value = parseFloat(val.toFixed(2));
    return this
  }

  function plusVal(val) {
    value = parseFloat((value += val).toFixed(2));
    return this
  }

  function getValue() {
    return value
  }

  return {
    setValue,
    plusVal,
    getValue
  }

})();

console.log(calc.setValue(10).plusVal(30).getValue())


https://learn.javascript.ru/task/chain-calls

SuperZen 25.07.2019 21:16

Русский, не заплатили )


Часовой пояс GMT +3, время: 09:32.