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

JavaScript добавление строки в число

Я читал повторное введение в JavaScript на MDN, а в разделе Numbers сказано, что вы можете преобразовать строку в число просто добавив перед ним оператор плюс.

Например:

+ "42", что даст выход номера 42.

Но далее в разделе "О операторах" говорится, что, добавляя строку "что-то" к любому числу, вы можете преобразовать это число в строку. Они также приводят следующий пример, который меня смутил:

"3" + 4 + 5 предположительно будет выводить строку 345 на выходе, поскольку числа 4 и 5 также будут преобразованы в строки.

Однако, не будет ли 3 + 4 + "5" получить число 12 вместо строки 75, как было указано в их примере?

В этом втором примере в разделе о операторах оператор <+ > , стоящий перед строкой "5", преобразует эту строку в число 5, а затем добавляет все до 12?

4b9b3361

Ответ 1

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

Если вы хотите использовать унарный плюс для конвертирования и добавить его к предыдущему значению, вам нужно удвоить его.

> 3 + 4 + "5"
"75"
> 3 + 4 + +"5"
12

Edit:

Вам нужно узнать о порядке операций:

+ и - имеют одинаковый приоритет и связаны с левым:

 > 4 - 3 + 5
 (4 - 3) + 5
 1 + 5
 6

+, связанное с левым снова:

> 3 + 4 + "5"
(3 + 4) + "5"
7 + "5"
75

унарные операторы обычно имеют более сильный приоритет, чем двоичные операторы:

> 3 + 4 + +"5"
(3 + 4) + (+"5")
7 + (+"5")
7 + 5
12

Ответ 2

Ответ можно найти в разделе 11.6.1 раздела Ecma262.pdf:

Если Type (lprim) является String или Type (rprim), является String, тогда a. Вернуть Строка, которая является результатом объединения ToString (lprim) после по ToString (rprim).

Таким образом, все операции будут разрешены в соответствии с приоритетом, так что, как только строка найдет любое число, число преобразуется в строку.

4 + 3 + "5"
"75"
4 + 3 + "5" + 3
"753"

Чтобы прочитать весь стандарт, перейдите здесь.

Ответ 3

Вы также можете использовать parseInt() или parseFloat(), например:

> 1 + 2 + "3"
"33"
> 1 + 2 + parseInt(3)
6

Я думаю, что намного чище, чем использовать + "3", но это только мое мнение.

Ответ 4

В примере 3 + 4 + "5" - парсер Javascript выполнит (3 + 4) + "5" , так как сначала будет 3 + 4, поэтому он добавит 3 + 4, потому что это числа, затем соедините строку "5" .

Ответ 5

Когда вы добавляете число и строку в Javascript, результат всегда является строкой.

Проверьте здесь эксперимент - http://jsfiddle.net/xuVur/1/

var a = "3" + 4 + 5;
var b = 3 + 4 + "5";

$("#result1").html(a); // prints 345
$("#result2").html(b); //prints 75

Ответ 6

Когда вы посмотрите на шаг 7 и "Примечание 2" в Оператор добавления (+) (§11.6.1) в спецификациях ES5,

говорится

Если Type (lprim) - String` или Тип (rprim) - это String, то Верните строку, которая является результатом объединения ToString (lprim), а затем ToString (rprim)


ПРИМЕЧАНИЕ 2 Шаг 7 отличается от шага 3 алгоритма сравнения для реляционных операторов (11.8.5), используя логическую или операцию вместо логической и операции.

Значение, если для обоих операндов применяется 7 (3+4) или "5" (|| not &&) <<25 > toString(). >

Таким образом, добавление фактически применяется к

"7" и "5""7" + "5" //"75"

Ответ 7

Оператор smple + в javascript используется для конкатенации и не добавлять.

Оператор скобки и a + перед целочисленной переменной формата строки будет выполнять задание каждый раз.

Это всегда отлично работает.

1 + (+"2") = 3

Поскольку размещение + перед строкой преобразует строковую переменную в число.

скрипка здесь: http://jsfiddle.net/xuVur/2/