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

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

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

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

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

Ответы

Ответ 1

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

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

2 + 2 === 4;  // true

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

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

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

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

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

+x + +y

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

+10 + +12

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

Ответ 5

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

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

Ответ 6

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

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

alert(totalVal);
// result 4

Ответ 7

Оператор добавления работает следующим образом:
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 demystified.