В JavaScript есть разница между использованием
if (foo.length > 0) { //run code involving foo }
и
if (foo) { //run code involving foo }
Если да, то может ли кто-нибудь объяснить разницу и пример, где они не будут одинаковыми?
Вот пример, где они не совпадают:
var x = []; alert(x? 'yes' : 'no'); // displays "yes" alert((x.length > 0)? 'yes' : 'no'); // displays "no"
Два совершенно разные. Используя .length, я предполагаю, что var является объектом jquery, и в этом случае if(var) всегда будет истинным. jQuery всегда будет возвращать объект, но он может быть пустым. if(var.length>0) проверяет, что объект jquery содержит элемент.
.length
var
if(var)
if(var.length>0)
Первый проверяет, возвращает ли var.length больше 0. Последний проверяет, является ли значение var истинным.
Вы не можете обязательно использовать любой из них для всех переменных.Для логического значения if (var) имеет больше смысла.Для строки или массива, если (var.length) имеет больше смысла.
они, очевидно, разные, вопрос на самом деле просто, почему они разные.
Ваш первый пример явно проверяет, что свойство length объекта больше 0. Если это правда, он оцениваетсодержание оператора if.
второй пример может только сказать вам, является ли переменная «правдивой» или «ложной» (или, как ее придумал великий Стивен Кольбер, «правдивость»).за подробностями обращайтесь к статье в Википедии о логических параметрах javascript .