Что на самом деле происходит, так это то, что нулевой объект подвергается строковому форматированию, например, null.toString (). В окне сообщения alert () браузер обычно интерпретирует объект, а не просто переводит его в строку, поэтому результат будет другим. И, конечно, браузеры (особенно IE) по-разному интерпретируют и структурируют.
Для чего бы то ни было, есть логика возврата нуля, когда ожидается строка. Все, что возвращает это значение, вероятно, делает это для того, чтобы обеспечить ложное значение для простого условного тестирования, но все же указывает, что результат скорее пустой, чем, например, неопределенный Методы DOM, которые возвращают объекты коллекции, делают то же самое. Кроме того, хотя пустой строковый литерал ('') является ложным значением, пустой объект String (new String ('')) не является; и последний может быть создан из первого случайно с дальнейшей обработкой. Таким образом, «безопасный» способ предотвратить случайный сброс потребителем кода допустимой строки - это вернуть строковый литерал или объект String в одном случае, а в другом - null.