var input = document.getElementById("input").value;
function sendRequest {
if (Validate.isNumber(input)) {
input.focus();
return;
}
// or
if (Validate.isNumber(input)) {
input.focus();
return null;
}
// or
if (Validate.isNumber(input)) {
return input.focus();
}
// start Ajax call
var xhttp = new XMLHttpRequest();
...
}
以上3个函数具有相同的结果(如果验证失败终止函数执行)...那么有什么区别?哪个更好?
答案 0 :(得分:0)
EsLint有一个很好的规则:consistent-return
要求return语句必须始终或从不指定值。如果 函数中的任何代码路径都显式返回值,但是一些代码 路径未明确返回值,可能是输入错误, 尤其是在大型功能中
// No implicit return with side effects
function foo(callback) {
const val = callback();
if (val === true) {
// Do something if callback returns true
}
}
那么,我们应该什么都不回报呢?
在JavaScript中,
undefined
表示已声明变量,但具有 尚未分配值。
null
是一个分配值。可以将其分配给变量作为 没有价值的体现。
TLDR :return null
。
PS 还查看了Null object pattern。如果成功路径返回Promise,那么负路径可以return Promise.resolve(null)
-如果该函数的使用者已经检查了Promise内部的值,则不在乎为什么它为空。