@MrNoobCoder

Что возвращает строчка return this.methods[op](a, b);?

function Calculator() {

  this.methods = {
    "-": (a, b) => a - b,
    "+": (a, b) => a + b
  };

  this.calculate = function(str) {

    let split = str.split(' '),
      a = +split[0],
      op = split[1],
      b = +split[2]

    if (!this.methods[op] || isNaN(a) || isNaN(b)) {
      return NaN;
    }

    return this.methods[op](a, b); // <---
  }

  this.addMethod = function(name, func) {
    this.methods[name] = func;
  };
}

Не могу никак понять, что конкретно возвращает данная строчка. Для чего возвращается ключ [op] и почему сразу же за ключом пишутся аргументы функции? Буду очень благодарен за ответ.
  • Вопрос задан
  • 127 просмотров
Решения вопроса 2
Big_Trouble
@Big_Trouble
Программист недосамоучка
// Чтобы проще было понять 
const methods = {
    "-": (a, b) => a - b,
    "+": (a, b) => a + b
  };
  
console.log(methods["+"](1, 5)) // 6
console.log(methods["-"](10, 1)) // 9

methods - объект с двумя ключами + и -. Мы не можем напрямую обратиться к объекту вот так: methods.+
Вместо этого мы пишем methods["+"], но по скольку по этому ключу храниться функция, мы можем сразу её вызвать, передав параметры.

methods["+"](1, 5) // 1 + 5
// Это тоже самое что

const methods = {
    substract: (a, b) => a - b
    add: (a, b) => a + b
  };

methods.add(1,5)
Ответ написан
DevMan
@DevMan
"ключ [op]" никуда не возвращается.
выберется переданный метод из methods и вызывается с аргументами a, b.
полученный результат возвращается.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы