Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.07.2019, 15:35
Новичок на форуме
Отправить личное сообщение для Piterom Посмотреть профиль Найти все сообщения от Piterom
 
Регистрация: 28.06.2019
Сообщений: 9

При решении задачи возникла проблема. Не могу создать цепочку вызовов в консоле.
Есть задание создать модуль калькулятор. Стандартные действия (прибавить, разделить и т.д.)
Конечное значение округлить до 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
}

})();
Ответить с цитированием
  #2 (permalink)  
Старый 25.07.2019, 16:35
Новичок на форуме
Отправить личное сообщение для Piterom Посмотреть профиль Найти все сообщения от Piterom
 
Регистрация: 28.06.2019
Сообщений: 9

Да, именно так. Как это правильно сделать? Читал статьи, еще больше запутался.
Ответить с цитированием
  #3 (permalink)  
Старый 25.07.2019, 17:06
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

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 в 17:09.
Ответить с цитированием
  #4 (permalink)  
Старый 25.07.2019, 21:16
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

Русский, не заплатили )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просмотрела исходик jQuery Откорректируйте где не верно taksebe jQuery 5 23.11.2018 22:42
Смена background при нажатии JIeuTo Общие вопросы Javascript 5 14.09.2018 18:48