我碰到了这段代码:
navigation.on('click', '.main-nav-item', function (e) {
var clickedNavItem = $j(this),
className = clickedNavItem.data('class'),
midNavItem = $j('.' + className, midNavigation);
midNavItem.length > 0 && e.preventDefault();
});
我尝试了解最后一行的目的:
midNavItem.length > 0 && e.preventDefault();
如果midNavItem.Length> 0,似乎停止了单击,但是我不理解该语法。应该是
if(midNavItem.length > 0) { e.preventDefault() };
不是两个条件。
你为什么要这样写?
最佳答案
这个怎么运作
它被称为short-circuit evaluation。您是正确的-这是您编写建议的if
语句的另一种方式:
if (midNavItem.length > 0) {
e.preventDefault();
}
它有效,因为
&&
won't execute the second operand unless the first is truthy。为什么使用
使用它的基本原理通常是使代码整洁。当然,这是主观的。可能有人说明确使用
if
语法总是更好-但是您还会发现大量使用速记的人/流行库。