Строковые и числовые переменные javascript
Что оценивает следующее?
"1"+2+4
Как насчет этого:
5 + 4 + "3"
В первом случае с "1"
является строкой, все является строкой, поэтому результат "124"
, Во втором случае его 93
.что здесь происходит? Почему в одном случае происходит сложение, а в другом - конкатенация строк?
var x = "1" + 2 + 4;
var z = 5 + 4 + "3";
console.log(x); // "124"
console.log(z); // 93
Кто-нибудь может объяснить это?
5 ответов
Выражение оценивается слева направо.
"1"+2+3
^--^
"12" //string +3
^_____________^
"123" //string
во 2-м случае
1+2+"3"
^_^
3+"3"
^___^
"33" // string
Подумайте о порядке операций (rtl или ltr) каждый раз, когда он выполняет двоичную операцию, он соответствующим образом преобразует ее, поэтому 5+4 будет int, а (5+4) + "3" будет строкой, поскольку "3" является строкой
Тот же метод применяется к разным примерам
В первом случае вы сначала создаете строку (1), а затем javascript объединяет следующее число в виде строк (124).
Во втором вы сначала создаете число, затем javascript добавляет второе число к этому первому числу (5 + 4 = 9), а затем вы добавляете строку, чтобы она выполняла объединение 9 и 3.
var x = "1" + 2 + 4; // 124
Это принимает строку "1" и объединяет в нее "2" и "4" в качестве строк.
var z = 5 + 4 + "3"; // 93
Это берет числа 4 и 5 и складывает их вместе, чтобы получить число 9, а затем соединяет строку "3" с этим, чтобы получить другую строку.
Главное, что здесь нужно убрать, это то, что конечный результат того, что вы здесь делаете, - это конкатенация строк. Порядок вычисления чисел отличается, но конечным результатом является строка.
В обоих случаях применяется преобразование типов и приоритет слева направо. в первом,
var x = "1" + 2 + 4; // 124
компилятор принимает 1 в качестве строки, и после этого он будет объединен с 2, теперь 12 является строкой, поэтому он будет объединен с 4, а результат выдаст "124" в виде строки.
var z = 5 + 4 + "3"; // 93
Во втором случае первые 5 и 4 являются числовыми, поэтому добавьте их, и результат будет равен 9. И это будет объединено со строкой 3, поэтому вывод soo будет равен 93 как строка.