假设我们有以下形式的功能:
function getReferenceToFoo( idName )
{
if( ! document.getElementById( idName ) )
{
return;
}
...
// else return reference to element normally
}
通过返回类型指示失败的最佳方法是什么?在我看来,我可以做以下其中一件事:
哪种方法最好?为什么?
答案 0 :(得分:4)
在JavaScript中,所有函数都会返回,即使您没有明确地让它们返回。如果没有return语句,函数将返回undefined
。但是有一个例外。如果使用new
语句,该函数将返回this
的实例。
所以:
function doFoo()
{
// do nothing
}
,
function doFoo()
{
return;
}
和
function doFoo()
{
return undefined;
}
与JavaScript引擎完全相同。
我真的不建议在JavaScript中使用 null
作为返回值。 null
是一个对象,进行类型检查会导致奇怪的逻辑。如果您使用null
作为回报,则最好将if()
中的表达式更改为更明确。
我建议仅从预期返回值为某种对象的函数返回null
作为失败值。如果预期的返回值是某种原始的,我会考虑undefined
。
foo = getReferenceToFoo('myID');
// foo might be a reference or null
if (null !== foo) {
// do things
}
但说实话,我不知道你为什么要这样做。如果找不到任何内容,方法document.getElementById
将返回null
。
我知道这是一个反模式,但实际上我确实使用了:
var myElmnt;
if ((myElmnt = document.getElementById('myId')))
{
// do stuff with myElmnt
}
是的,我知道,我会在地狱和所有人中燃烧。
答案 1 :(得分:1)
如果你想返回一些东西,我会返回null,因为null的目的是指示一个空内容。
Null是一个特殊的指针值(或其他类型的对象引用),用于表示指针故意不指向(或引用)对象。
否则,如果你想要精确或失败中断,你可能想要抛出异常。
答案 2 :(得分:-2)
返回false或没有。如果您正在执行,return
只会为空:
foo = getReferenceToFoo('myID');
if (foo) {
// do things
}