Разница между if (var.length> 0) {} и if (var) {} - PullRequest
7 голосов
/ 18 июня 2011

В JavaScript есть разница между использованием

if (foo.length > 0) {
//run code involving foo
}

и

if (foo) {
//run code involving foo
}

Если да, то может ли кто-нибудь объяснить разницу и пример, где они не будут одинаковыми?

Ответы [ 4 ]

11 голосов
/ 18 июня 2011

Вот пример, где они не совпадают:

var x = [];
alert(x? 'yes' : 'no'); // displays "yes"
alert((x.length > 0)? 'yes' : 'no'); // displays "no"
2 голосов
/ 18 июня 2011

Два совершенно разные. Используя .length, я предполагаю, что var является объектом jquery, и в этом случае if(var) всегда будет истинным. jQuery всегда будет возвращать объект, но он может быть пустым. if(var.length>0) проверяет, что объект jquery содержит элемент.

1 голос
/ 18 июня 2011

Первый проверяет, возвращает ли var.length больше 0. Последний проверяет, является ли значение var истинным.

Вы не можете обязательно использовать любой из них для всех переменных.Для логического значения if (var) имеет больше смысла.Для строки или массива, если (var.length) имеет больше смысла.

0 голосов
/ 18 июня 2011

они, очевидно, разные, вопрос на самом деле просто, почему они разные.

Ваш первый пример явно проверяет, что свойство length объекта больше 0. Если это правда, он оцениваетсодержание оператора if.

второй пример может только сказать вам, является ли переменная «правдивой» или «ложной» (или, как ее придумал великий Стивен Кольбер, «правдивость»).за подробностями обращайтесь к статье в Википедии о логических параметрах javascript .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...