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