我总是编写我的JavaScript块
var functionName = function() {
if (someCondition) {
// stuff
} else {
// stuff
}
};
但今天我看到了
var functionName = function() {
if (someCondition) {
// stuff
return;
}
// stuff
};
我喜欢第一个例子在逻辑中更明确。 您想要或不想以第二种方式展示它的原因是什么?
答案 0 :(得分:12)
如果您有多个someCondition
,则缩进较少。
想象:
var functionName = function() {
if (someCondition) {
// stuff
} else {
// stuff
if (someConditionB) {
// stuff
} else {
// stuff
if (someConditionC) {
// stuff
} else {
// stuff
if (someConditionD) {
// stuff
} else {
// stuff
}
}
}
}
};
如果没有其他所有内容,这将更具可读性:
var functionName = function() {
if (someCondition) {
// stuff
return;
}
if (someConditionB) {
// stuff
return;
}
if (someConditionC) {
// stuff
return;
}
if (someConditionD) {
// stuff
return;
}
// stuff
};
答案 1 :(得分:4)
许多编码标准要求您不要“提前退出”功能。这是可读性和“正确性”[*]
之间的权衡提前退出避免了后续代码在额外级别缩进的需要。例如,恕我直言,在函数顶部将一些错误检测检查组合在一起,并在失败时提前退出,并将函数的内容写为正常,这是有意义的。
另一方面,在阅读用于调试目的的代码时,很容易错过提前退出,并最终试图在代码的错误部分找到错误。
[*]相同的代码标准通常会避免使用break
和continue
。 FWIW我认为这是过度应用Djikstra的“GOTO被认为是有害的”口头禅的症状。
答案 2 :(得分:1)
您可能希望在两种情况下使用方法2:
案例1:你的逻辑之后你有更多的东西你不想跑。执行的代码可以满足您的所有需求,而且您不需要额外的东西。
案例2:根据函数附加的内容,您希望返回false以防止操作。一旦这样的实例成为表单的onSubmit
,并验证输入。如果不好,请立即返回false
并阻止表单提交。