Дополнение не работает в 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.