2015-02-10 2 views
0

Можно ли использовать свойство length вместо =="" для проверки пустой строки?Можно ли использовать длину вместо ""?

Действительно ли это применимо ко всем операторам bool?

Это может быть очень простой вопрос, и я уверен, что ответ да/да, но я использую его совсем недавно, и меня немного беспокоит любая возможная ошибка.

Для полноты, вот простой пример

var valid = name.length && (foo.length||bar.length); 
+0

Вы можете использовать 'var valid = name', потому что пустая строка является фальшивым значением. – shahkalpesh

ответ

3

Это всегда безопасно использовать .length Если вы точно знаете, что у вас есть что-то в переменной, которая может иметь свойства (как строка).

Но, если переменная может быть undefined или null, то .length не будет действительным и не будет делать то, что вы хотите, и name === "" будет безопаснее.

Многие разработчики Javascript просто сделать:

if (name) { 
    // 
} 

Проверяется для любого truthy значения в name. Таким образом, if не будет удовлетворен, если name - undefined, null или даже пустая строка "" и, в некоторых случаях, защищает ваш код немного больше, чем вы делали.


Или, в вашем примере, вы могли бы, возможно, просто сделать:

var valid = name && (foo || bar); 

Это потребует name и либо foo или bar быть truthy. Это не будет защищать от name, foo или bar - это какой-то тип данных без свойства .length, как и у вашего исходного кода, но лучше было бы защитить от любой из этих переменных undefined или null.

Помните, что пустая строка "" является значением false, поэтому вы можете использовать это в своих интересах в булевых сравнениях.

Смежные вопросы