我碰到了这段代码:

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语法总是更好-但是您还会发现大量使用速记的人/流行库。

09-17 10:24