+
является оператором сложения для числовых переменных и оператором конкатенации для строк.
Всякий раз, когда есть строка после +
, Javascript будет использовать +
как оператор конкатенации и преобразовать (набрал) как можно больше терминов вокруг строки, чтобы она могла их конкатенировать. Это просто поведение Javascript. (Если вы попытались console.log(23 + 2 + "." + 1 + 5 + "02" + 02);
, вы получите результат 25.15022
. Число 02
было введено в строку 2
перед конкатенированием.
-
может быть только вычитанием оператор, поэтому при задании строки он будет неявно изменять тип строки "1"
на число 1
, если он этого не сделал, нет смысла "1" - 1
. Если вы попытались console.log(23 + 2 + 1 + 5 - "02" + 03);
вы получите 32 - строка 02
преобразуется в число 2
. Термин после -
должен быть способен преобразовать в число, если вы попытались console.log(23 - 2 - "." - 1 - 5 - 02 - "02");
, вы получите NaN
].
Что еще более важно, если вы попытались console.log(23 + 2 + "." + 1 + 5 - "02" + 03);
, он выведет 26.15
, где все, перед -
было обработано как строка (поскольку оно содержит строку "."
, а затем термин после -
рассматривается как число.