Добавление и вычитание чисел как строки

Я считал следование вопроса на ТАК:

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

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

27
задан CalvT 12 December 2018 в 11:10
поделиться

5 ответов

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

24
ответ дан 28 November 2019 в 04:28
поделиться

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

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

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

16
ответ дан 28 November 2019 в 04:28
поделиться

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

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

parseInt('7', 10) + 4

Зачем указывать систему счисления 10? Таким образом, '077' не обрабатывается как восьмеричное.

30
ответ дан 28 November 2019 в 04:28
поделиться

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

2
ответ дан 28 November 2019 в 04:28
поделиться

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

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

2
ответ дан 28 November 2019 в 04:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: