Это всегда безопасно использовать .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, поэтому вы можете использовать это в своих интересах в булевых сравнениях.
Вы можете использовать 'var valid = name', потому что пустая строка является фальшивым значением. – shahkalpesh