在If / Else中你应该使用空白退货退出吗?

时间:2015-12-08 21:53:25

标签: javascript angularjs return return-type

  

/ *更新 /

     
    

我同意检查newVal存在的答案......但如果你必须选择其中一个选项,那就少了     弊病吗

  

我正在阅读教程并看到下面的代码使用#1。我相信我有这个权利......如果传递newVal更新数据库,会发生什么。如果!不退出功能。我已经列出了我想到的变化......我的问题是什么是最好用的,为什么还是有更好的方法没有列出? https://code.tutsplus.com/courses/real-time-web-apps-with-angularjs-and-firebase/lessons/on-value

我正在做的教程是首先将ng-model message.text设置为数据库值 - 然后使用watch更新后面的值。 !newVal是在输入值之前阻止它更新我相信。直接引用:"确保新值未定义,因为当页面加载未定义的新值时。"

  1. 如果有空白返回+否则
  2. $scope.$watch('message.text', function(newVal){
      if (!newVal){return;}
      childRef.update({
        text: newVal
      });
    });
    
    1. 如果有空白则返回+ else
    2.  $scope.$watch('message.text', function(newVal){
                if (!newVal){return;}
                else{
                  childRef.update({
                    text: newVal
                  });
                }
              });
      
      1. 如果没有返回并使用其他
      2.  $scope.$watch('message.text', function(newVal){
                  if (!newVal){}
                  else{
                    childRef.update({
                      text: newVal
                    });
                  }
                });
        
        1. 如果没有回报而没有别的 - 我不认为是作品
        2.  $scope.$watch('message.text', function(newVal){
                    if (!newVal){}
                      childRef.update({
                        text: newVal
                      });
                  });
          

4 个答案:

答案 0 :(得分:3)

如果陈述在可能的情况下应该使用肯定的话,那就不那么容易混淆了。

$scope.$watch('message.text', function(newVal) {
  if(newVal) {
    childRef.update({
      text: newVal
    });
  }
});

我将您的示例解释为:

If not newVal do nothing, if not not newVal do something

我将我的例子解释为:

If newVal do something

更容易理解。

============================

关于使用回归与否。没有必要,因为 javascript 将默认为return undefined;

答案 1 :(得分:1)

你也可以这样做:

$scope.$watch('message.text', function(newVal){
  if (newVal) {
    childRef.update({
      text: newVal
    });
  }
});

这对我来说是最清楚的。

在我看来,第一个,只是"跳出来"功能是一种不好的做法。我总是将其余的代码放在else分支中,因此代码更加结构化,可以清楚地看到代码的其余部分也是有条件的。这与函数编程密切相关。

答案 2 :(得分:1)

甚至更短

$scope.$watch('message.text', function(newVal) {
    newVal && childRef.update({
        text: newVal
    });
});

为了说清楚,我使用短路返回ID,之后有多个比较。

但是这个

if (!newVal) {
    return;
} else {
    // do something
}

没有必要,因为返回结束继续。

更好
if (!newVal) {
    return;
}
// do something

答案 3 :(得分:0)

如果 选择一个,那么最好的是:

$scope.$watch('message.text', function(newVal){
    if (!newVal) {
    } else {
        childRef.update({
            text: newVal
        });
    }
});

我想说,如果你在一个分支中使用return,那么也在另一个分支中返回。纯return;语句感觉有点无用。如果您希望代码返回某些内容,那么无论如何您应该在每个分支中写return,如果您没有返回任何内容,那么我宁愿只留下所有return