Большинство разработчиков моего текущего проекта используют (для меня) странный способ проверить пустые строки в ECMAScript:
if (theString.length == 0)
// string is empty
Я обычно писал бы это вместо:
if (theString == "")
// string is empty
Последняя версия кажется более читаемой и естественной для меня.
Никто, которого я попросил, не мог объяснить преимущества версии 1. Я думаю, что в какой-то момент в прошлом кто-то сказал всем, что это способ сделать это, но теперь этот человек ушел, и никто не помнит, почему он должен сделайте это.
Мне интересно, есть ли причина, почему я должен выбрать первую версию за секунду? Это имеет значение, одна версия лучше, чем другая? По какой-то причине одна версия более безопасна или быстрее?
(Мы действительно делаем это в Siebel eScript, который соответствует ECMAScript Edition 4)
Спасибо.
Ответ 1
Я действительно предпочитаю эту технику на нескольких языках, поскольку иногда бывает трудно различать пустой строковый литерал ""
и несколько других строк (" "
, '"'
).
Но есть еще одна причина избежать theString == ""
в ECMAScript: 0 == ""
оценивается как true
, как и false == ""
и 0.0 == ""
...
... поэтому, если вы не знаете, что theString
на самом деле строка, вы можете создать проблемы для себя, используя слабое сравнение. К счастью, вы можете избежать этого с разумным использованием строгого (===
) оператора:
if ( theString === "" )
// string is a string and is empty
См. также:
Ответ 2
Проблема в том, что если theString
установлено на 0
(ноль), ваш второй пример будет оцениваться как true.
Ответ 3
Правильный ответ правильный, и важно понимать проверку типов. Но что касается производительности, сравнение строк будет терять до .length-метода каждый раз, но очень маленькой суммой. Если вы не заинтересованы в бритье миллисекунд со скоростью вашего сайта, вам может потребоваться выбрать то, что более читаемо/поддерживается для вас и, что более важно, ваша команда.