Почему метод возвращает NaN? В общем имеется метод, принимает строку-числа с арифмитическим действием, который по сути должен возвращать результат, те преобразоваться и как нормально преобразовать, и возвратить результат сложения например?function Calculator() {
this.calculate = function (str){


return +str;
}
}
var calc = new Calculator();
console.log(calc.calculate("2 + 4")); // 6

21 Авг 2019 в 07:03
177 +1
1
Ответы
1

Проблема заключается в том, что ваш метод calculate пытается преобразовать строку в число, но такой подход не сработает, потому что вы передаете ему строку "2 + 4", а не просто число. JavaScript не понимает как интерпретировать строку с арифметическим действием как вы хотите.

Для того чтобы метод работал правильно, вам нужно разбить строку на операнды и операторы, а затем выполнить соответствующее арифметическое действие. Например, вот как можно переделать ваше решение:

function Calculator() {
this.calculate = function (str) {
var tokens = str.split(' '); // Разбиваем строку на операнды и оператор
var operand1 = parseInt(tokens[0]); // Преобразуем операнды в числа
var operator = tokens[1]; // Получаем оператор
var operand2 = parseInt(tokens[2]); // Преобразуем операнды в числа
switch (operator) {
case '+':
return operand1 + operand2;
case '-':
return operand1 - operand2;
case '*':
return operand1 * operand2;
case '/':
return operand1 / operand2;
default:
return NaN;
}
}
}
var calc = new Calculator();
console.log(calc.calculate("2 + 4")); // 6

Теперь ваш метод calculate правильно разбивает строку на операнды и оператор, выполняет соответствующее арифметическое действие и возвращает результат.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир