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

Добавление + "в строку добавляет" 0"

Случайной опечаткой я столкнулся с поведением, которое я не могу объяснить.

Когда у меня есть

var text = "abc";
text += + "";

переменная text внезапно становится abc0.

Может ли кто-нибудь объяснить это, пожалуйста?

4b9b3361

Ответ 1

+ "" оценивает число 0. Это связано с тем, что для применения унарного плюса оператор "" принуждается к числу - то же, что и Number(""), что приводит к 0, если строка пустая или пустая.

Когда вы затем "добавляете" (+ или в этом случае +=) число 0 в строку "abc", оно принуждается к строке "0", что приводит к "abc0".

Из spec:

StringNumericLiteral, пустой или содержащий только пробел, преобразуется в +0.

Ответ 2

Как вы можете видеть в TypeScript (+ "") есть число (0):

введите описание изображения здесь

Ответ 3

from: http://xkr.us/articles/javascript/unary-add/

В JavaScript можно использовать только оператор + перед одним элементом. Это указывает на математическую операцию и пытается преобразовать элемент в число. Если преобразование не удастся, оно будет оцениваться до NaN. Это особенно полезно, когда нужно быстро преобразовать строку в число, но также можно использовать для набора других типов.