Как вы знаете, в 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 : '')на самом деле не очень...