Какой тип возвращает функция в данном случае?

202
09 ноября 2018, 12:30

В данном случае непонятно что за тип возвращается в последней строке?
Что это, массив с функциями ?

function Calculator() {
    var methods = {
        "-": function(a, b) {
        return a - b;
    },
        "+": function(a, b) {
        return a + b;
    }
};
this.calculate = function(str) {
    var split = str.split(' '),
    a = +split[0],
    op = split[1],
    b = +split[2]
    if (!methods[op] || isNaN(a) || isNaN(b)) {
        return NaN;
    }
return methods[op](a, b);
Answer 1

Строка, переданная в this.calculate разбивается через пробелы, где a и b типкастятся в числа, а op, в свою очередь, содержит операцию (конкретно здесь может быть только сложение и вычитание - они заранее прописаны в локальном объекте methods) Затем проверяется - существует ли указанная операция в объекте methods и не являются ли переданные числа a & b NaN. (если хоть что-нибудь из этого true, результатом выполнения становится NaN) Если это не так, то вызывается необходимая функция по ключу из объекта methods, которая входными данными принимает два числа и возвращает результат выполнения. (сложение или вычитание конкретно в Вашем примере.)

UPD. как подсказали в комментариях, стоит уточнить - тип возвращаемого значения всегда number.

READ ALSO
Запись текста из массива в iconContent и balloonHeader

Запись текста из массива в iconContent и balloonHeader

Создание макета балуна на основе Twitter Bootstrap

257
Заменить все вхождения “ключевых слов” на одноименные поля объекта

Заменить все вхождения “ключевых слов” на одноименные поля объекта

Нужно заменить в строке все вхождения "ключевых слов" на соответствующие им поля объекта"Ключевое слово" всегда начинается с # (если необходимо,...

207
Как привязать объекты к responsive изображению?

Как привязать объекты к responsive изображению?

Как привязать объекты к responsive изображению? К примеру: У меня есть карта 2500x3000px, на ней изображены островаЕсть спрайт человечка с номером команды...

216