Как вы знаете, в JavaScript '' + null = "null"
и '' + undefined = "undefined"
(в большинстве браузеров я могу проверить: Firefox, Chrome и IE). Я хотел бы узнать происхождение этой странности (что, черт возьми, было в голове у Брендана Эйха?!), и если есть какая-то цель изменить его в будущей версии ECMA. Это действительно очень неприятно для того, чтобы сделать 'sthg' + (var || '')
для конкатенации строк с переменными и использования сторонней структуры, такой как Underscore или другой, для этого используется молот для стука ногтей.
Edit:
Чтобы соответствовать критериям, требуемым StackOverflow, и уточнить мой вопрос, это тройной:
- Какова история за странность, которая превращает JS-преобразование
null
илиundefined
в их строковое значение в конкатенацииString
? - Есть ли шанс для изменения этого поведения в будущих версиях ECMAScript?
- Каким будет самый лучший способ объединить
String
с потенциальным объектомnull
илиundefined
, не попадая в эту проблему (получение некоторой"undefined"
из"null"
в середине строки)? По самым субъективным критериям я имею в виду: короткие, чистые и эффективные. Не нужно говорить, что'' + (obj ? obj : '')
на самом деле не очень...