Javascript函数通常会返回未定义的值吗?

Javascript函数通常会返回未定义的值吗?,javascript,Javascript,我是Javascript新手,我想知道从函数中故意返回未定义的值是否是一种常见做法 例如,一个divide()函数应该这样实现: var divide1 = function (x, y) { if (y === 0) { return undefined; } return x/y; }; 还是像这样 var divide2 = function (x, y) { if (y === 0) { throw new Error(

我是Javascript新手,我想知道从函数中故意返回未定义的值是否是一种常见做法

例如,一个divide()函数应该这样实现:

var divide1 = function (x, y) {
    if (y === 0) {
        return undefined;
    }

    return x/y;
};
还是像这样

var divide2 = function (x, y) {
    if (y === 0) {
        throw new Error("Can't divide by 0");
    }

    return x/y;
};
我假设返回undefined通常是为没有返回值的函数保留的(相当于Java或C#中的void)

我假设返回undefined通常是为没有返回值的函数保留的(相当于Java或C#中的void)

与Java或C#一样,您也可以编写
return

这三个函数返回相同的结果:

function VOID () {
  return;
}


function VOID () {
  return undefined;
}


function VOID () {

}
这是默认设置:

function foo() {}
console.log(foo());
但事实证明这不是一个好的选择。可以运行到异常状态的代码不应该以静默方式运行。JavaScript中的许多错误都是漏洞百出的,因为当出现错误时,代码不会剧烈地中断

因此,除非您是一名出色的开发人员,并且您可以保证所有接触此代码的人都处于同一级别,并且您不会犯错误,否则您可以返回
undefined
。一、 我自己,会抛出一个例外


事实证明,我不是一个足够好的开发人员:-)

第二个解决方案肯定是更好的解决方案,您已经正确地处理了异常。引发了异常,但没有太多地处理它。@BoltClock哦,是的,
引发了
的确。@BoltClock很有趣,但undefined不是保留字,所以可以这样做
函数f(){var undefined=42;返回undefined}
。如此简单的
返回;
返回真实的
未定义的
更可靠。除非您正在检查的内容对脚本的运行至关重要,否则引发错误并不一定会更好,因为它会迫使所有其他调用它的代码捕获错误。通常,最好返回“错误”您可以检查的值,如
false
。请记住,您需要进行严格检查,
retVal===false
,以防您的函数也可能返回0或空字符串。是的,我同意抛出异常是最佳选择,但我想知道这是否是像JQuery这样的主要库通常采用的方法试图了解这些方法在野外的流行程度。我所知道的所有主要库都避免这种情况。jQuery是一种特殊情况,因为它只在选择器不匹配时返回空列表,所以这有点像返回一个未定义的“安全”列表,不会导致任何异常/问题(但同时也很难发现bug)。也就是说,你可以想到JavaScript(语言和运行时)作为最常用的框架。在本例中,答案是肯定的,最常用的框架可以做到这一点,并且会导致很多问题。我不是100%确定,但CoffeeScript不再支持此全局变量。非常好,感谢您的解释。