Дополнение не работает в 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 оператор + может выполнять сложение или объединение в зависимости от типа своих операндов. Когда числа используются с +, он использует сложение, но когда строки используются с +, он объединяет (объединяет строки)
Если числа, которые вы пытаетесь добавить, равны 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, опубликованному ниже, для более подробной информации.