JavaScript добавление строки в число
Я читал повторное введение в JavaScript на MDN, а в разделе Numbers сказано, что вы можете преобразовать строку в число просто добавив перед ним оператор плюс.
Например:
+ "42", что даст выход номера 42.
Но далее в разделе "О операторах" говорится, что, добавляя строку "что-то" к любому числу, вы можете преобразовать это число в строку. Они также приводят следующий пример, который меня смутил:
"3" + 4 + 5 предположительно будет выводить строку 345 на выходе, поскольку числа 4 и 5 также будут преобразованы в строки.
Однако, не будет ли 3 + 4 + "5" получить число 12 вместо строки 75, как было указано в их примере?
В этом втором примере в разделе о операторах оператор <+ > , стоящий перед строкой "5", преобразует эту строку в число 5, а затем добавляет все до 12?
Ответы
Ответ 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/