Подтвердить что ты не робот

Сложение и вычитание чисел как строк

Я прочитал следующее по вопросу о SO:

"7" + 4 дает "74", тогда как "7" - 4 дает 3 в JavaScript

Почему это происходит?

4b9b3361

Ответ 1

Оператор "+" определен как для строк, так и для чисел, поэтому, когда вы применяете его к строке и номеру, число будет преобразовано так, что строка, а затем строки будут объединены: '7' + 4 = > '7' + '4' = > '74' Но '-' определяется только для чисел, а не строк, поэтому строка '7' будет преобразована в число: '7' - 4 = > 7 - 4 = > 3

Ответ 2

+ - это оператор конкатенации строк, поэтому, когда вы выполняете '7' + 4, вы принудительно вставляете 4 в строку и добавляете ее. Нет такой двусмысленности с оператором -.

Если вы хотите быть однозначным, используйте parseInt() или parseFloat():

parseInt('7', 10) + 4

Зачем указывать радиус 10? Поэтому '077' не анализируется как восьмеричный.

Ответ 3

Оператор + перегружен в JavaScript для выполнения конкатенации и добавления. Способ JavaScript определяет, какая операция для выполнения основана на операндах. Если один из операндов не относится к классу Number (или примитиву Number), то оба будут переданы в строки для конкатенации.

3 + 3 = 6
3 + '3' = 33
'3' + 3 = 33
(new Object) + 3 = '[object Object]3'

Оператор -, однако, предназначен только для чисел, и, таким образом, операнды всегда будут отлиты к числам во время операции.

Ответ 4

Потому что + для концентрации, если вы хотите добавить два числа, вы должны сначала проанализировать их parseInt() и - знак для вычитания

Ответ 5

Знак + в Javascript сначала интерпретируется как конкатенация, а затем добавление из-за того, что первая часть представляет собой строку ('7'). Таким образом, интерпретатор преобразует вторую часть (4) в строку и объединяет ее.

Что касается '7' - 4, то другого значения, кроме вычитания, нет, поэтому вычитание выполняется.