Я прочитал следующее по вопросу о SO:
"7" + 4 дает "74", тогда как "7" - 4 дает 3 в JavaScript
Почему это происходит?
Я прочитал следующее по вопросу о SO:
"7" + 4 дает "74", тогда как "7" - 4 дает 3 в JavaScript
Почему это происходит?
Оператор "+" определен как для строк, так и для чисел, поэтому, когда вы применяете его к строке и номеру, число будет преобразовано так, что строка, а затем строки будут объединены: '7' + 4 = > '7' + '4' = > '74' Но '-' определяется только для чисел, а не строк, поэтому строка '7' будет преобразована в число: '7' - 4 = > 7 - 4 = > 3
+
- это оператор конкатенации строк, поэтому, когда вы выполняете '7' + 4
, вы принудительно вставляете 4
в строку и добавляете ее. Нет такой двусмысленности с оператором -
.
Если вы хотите быть однозначным, используйте parseInt()
или parseFloat()
:
parseInt('7', 10) + 4
Зачем указывать радиус 10? Поэтому '077'
не анализируется как восьмеричный.
Оператор +
перегружен в JavaScript для выполнения конкатенации и добавления. Способ JavaScript определяет, какая операция для выполнения основана на операндах. Если один из операндов не относится к классу Number
(или примитиву Number
), то оба будут переданы в строки для конкатенации.
3 + 3 = 6 3 + '3' = 33 '3' + 3 = 33 (new Object) + 3 = '[object Object]3'
Оператор -
, однако, предназначен только для чисел, и, таким образом, операнды всегда будут отлиты к числам во время операции.
Потому что + для концентрации, если вы хотите добавить два числа, вы должны сначала проанализировать их parseInt() и - знак для вычитания
Знак + в Javascript сначала интерпретируется как конкатенация, а затем добавление из-за того, что первая часть представляет собой строку ('7'). Таким образом, интерпретатор преобразует вторую часть (4
) в строку и объединяет ее.
Что касается '7' - 4
, то другого значения, кроме вычитания, нет, поэтому вычитание выполняется.