This question already has answers here:
What is “x && foo()”?
                                
                                    (5个答案)
                                
                        
                3年前关闭。
            
        

我正在编写一些代码,并在整个代码中多次发现此结构:y && y.someProp && y.someFunction();

  $rootScope.funct = function() {
      $timeout(function() {
        var y = service.doSomething();
        y && y.someProp && y.someFunction();
      });
    } else {
      var y = service.doSomething();
      y && y.doSomethingElse();
    }
  };


这样做的目的是什么?如果两个y && something else都未完成或为假,是否停止程序执行?

最佳答案

它是以下内容的简写:

if (y && y.someProp) {
    y.someFunction() // Call someFunction
}


因此,如果y的值不为falsy并且y.someProp的值为falsy,则它将调用someFunction函数。这是一些人喜欢而另一些人不喜欢的简写。

09-10 18:22