Случайной опечаткой я столкнулся с поведением, которое я не могу объяснить.
Когда у меня есть
var text = "abc";
text += + "";
переменная text внезапно становится abc0.
Может ли кто-нибудь объяснить это, пожалуйста?
Ответ 1
+ "" оценивает число 0. Это связано с тем, что для применения унарного плюса оператор "" принуждается к числу - то же, что и Number(""), что приводит к 0, если строка пустая или пустая.
Когда вы затем "добавляете" (+ или в этом случае +=) число 0 в строку "abc", оно принуждается к строке "0", что приводит к "abc0".
В JavaScript можно использовать только оператор + перед одним элементом. Это указывает на математическую операцию и пытается преобразовать элемент в число. Если преобразование не удастся, оно будет оцениваться до NaN. Это особенно полезно, когда нужно быстро преобразовать строку в число, но также можно использовать для набора других типов.