/ *更新 /
我同意检查
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是在输入值之前阻止它更新我相信。直接引用:"确保新值未定义,因为当页面加载未定义的新值时。"
$scope.$watch('message.text', function(newVal){ if (!newVal){return;} childRef.update({ text: newVal }); });
$scope.$watch('message.text', function(newVal){ if (!newVal){return;} else{ childRef.update({ text: newVal }); } });
$scope.$watch('message.text', function(newVal){ if (!newVal){} else{ childRef.update({ text: newVal }); } });
$scope.$watch('message.text', function(newVal){ if (!newVal){} childRef.update({ text: newVal }); });
答案 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
。