Используя
w && !(w=0) && i.removeClass(css).data('w',0).val('');
для этого объяснения, он позволяет объединить несколько команд, одновременно гарантируя, что каждая из них верна.
Это также может быть представлено как:
if (w) {
w = 0;
i.removeClass(css).data('w',0).val('');
}
Сначала он проверяет, что w
оценивается как true, и, если это так, он проверяет, является ли w=0
неверным (w != 0
).Если это также верно, то это переходит к фактической команде.
Это обычное сокращение для многих языков, в которых используется отложенная оценка: если следующая оценка добавляется с помощью and
(&&
) тогда следующие команды не будут выполнены, если он вернет false.Это полезно в ситуациях, когда вы хотите выполнить какое-либо действие только в том случае, если предыдущий оператор возвращает true, например:
if (object != null && object.property == true)
, чтобы убедиться, что объект не равен нулю перед его использованием, в противном случае выбудет обращаться к нулевому указателю.