Javascript&&;运算符逻辑

Javascript&&;运算符逻辑,javascript,angularjs,if-statement,and-operator,Javascript,Angularjs,If Statement,And Operator,我正在开发一个角度控制器。出于某种原因,有一个If语句给了我一个问题,是的,一个If语句 代码如下: $scope.new = function(logoFile) { if($scope.comprobarCampoDesc() && $scope.comprobarCampoFecha() && $scope.comprobarCampoName() ) { //program logic } 还有其他代码: $scope.comprobarCampoN

我正在开发一个角度控制器。出于某种原因,有一个If语句给了我一个问题,是的,一个If语句

代码如下:

$scope.new = function(logoFile) {
if($scope.comprobarCampoDesc() && $scope.comprobarCampoFecha() && $scope.comprobarCampoName() ) 
{ 
//program logic
}
还有其他代码:

$scope.comprobarCampoName = function(e) {
//program logic
return bol;
};


$scope.comprobarCampoDesc = function(e) {
//program logic
return bol;
};


$scope.comprobarCampoFecha = function(e) {
//program logic
return bol;
};
好的,由于我无法识别的任何原因,if语句只检查3个方法中的2个,具体取决于顺序。在这个具体的例子中,它忽略了“$scope.comprobarCompoName”,但如果我更改顺序,其他方法将不起作用

谢谢你的帮助。
问候。

在您的情况下,如果其中一个条件等于
false
,则
if
语句将停止并不再重复

如果您确实需要执行其中每一项,我建议您执行以下操作:

var first = $scope.comprobarCampoDesc();
var second = $scope.comprobarCampoName();
var third = $scope.comprobarCampoFecha();

if (first && second && third){
   // execute
}

它总是检查3个方法中的2个,还是仅当3个方法中的2个返回
true
?您必须知道
&&
运算符只计算下一个操作数(
函数
)仅当前面的操作数的计算结果为true或等效值时。这很奇怪,因为所有操作数都为false,并且总是执行其中的2个。无论如何,谢谢你的帮助。最后,为了在if语句中只执行一次调用,我将三种方法合并在一起。这种行为的官方术语是短路求值,这在编程语言中非常常见。看见