Дополнение не работает в JavaScript

Я пытаюсь выучить Javascript. Здесь меня смущает следующий код.

http://rendera.heroku.com/usercode/eae2b0f40cf503b36ee346f5c511b0e29fc82f9e

Когда я положил x+y в функции это идет не так. Например 2+2=22, 5+7=57

Но /, *, - работают. Почему + не работает? Пожалуйста, помогите мне. Заранее большое спасибо

7 ответов

Решение

Одна или обе переменные являются строкой, а не числом. Это делает + сделать конкатенацию строк.

'2' + 2 === '22';  // true

2 + 2 === 4;  // true

Другие арифметические операторы / * - будет выполнять toNumber преобразование в строку (и).

'3' * '5' === 15;  // true

Быстрый способ преобразовать строку в число - использовать + оператор.

+'2' + 2 === 4;  // true

... или с вашими переменными:

+x + +y

+ имеет два использования. Одним из них является дополнение, другим, однако, является конкатенация строк. Если одна или обе ваши переменные являются строкой, то + объединит их.

Вам нужно будет использовать parseInt или же parseFloat превратить строку в число.

В Javascript оператор + может выполнять сложение или объединение в зависимости от типа своих операндов. Когда числа используются с +, он использует сложение, но когда строки используются с +, он объединяет (объединяет строки)

Это работает каждый раз

((x*1) + (y*1))

Если числа, которые вы пытаетесь добавить, равны 10 и 12, если их итоговая сумма должна быть равна 22, то вам, вероятно, следует сделать это следующим образом.

+10 + +12

И результатом может быть строка типа 1012, если одно или оба числа являются строкой.

Унарный плюс должен работать:

var totalVal = (+2) + (+2);

alert(totalVal);
// result 4

Оператор сложения работает следующим образом:
1) Если хотя бы один операнд является строкой, то другой преобразуется в строку и выполняется конкатенация;

1 + "2"        // "12"
"2" + "3"      // "23"
"2" + null     // "2null", null is converted to "null"

2) В других случаях оба операнда преобразуются в числа:

1 + null      // 2, null is converted to 0
1 + undefined // NaN, undefined is converted to NaN

Обратитесь к оператору добавления JavaScript, опубликованному ниже, для более подробной информации.

Другие вопросы по тегам