【问题标题】:Javascript && operator logicJavascript && 运算符逻辑
【发布时间】:2015-11-17 12:12:18
【问题描述】:

我正在开发一个角度控制器。出于某种原因,有一个 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.comprobarCampoName”,但如果我更改顺序,其他方法将不起作用。

感谢您的帮助。 问候。

【问题讨论】:

  • 它是否总是检查 3 个方法中的 2 个,或者仅在 3 个方法中有 2 个返回 true 时检查?
  • 你必须知道 && 运算符仅在之前的操作数计算为真或等效时才计算下一个操作数(在你的情况下为 functions)。
  • 这很奇怪,因为所有的操作数都是假的,而且总是执行其中的 2 个。无论如何感谢您的帮助。最后我将这三种方法合二为一,以便在 if 语句中只调用一次。

标签: javascript angularjs if-statement and-operator


【解决方案1】:

在您的情况下,如果其中一个条件等于 falseif 语句将停止并且不会进一步迭代。

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

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

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

【讨论】:

猜你喜欢
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
相关资源
最近更新 更多