2012-02-02 42 views
8

我在想,如果有一个JavaScript的方式有类似coalesce语句逻辑SQL将在一个指定的顺序是这样的返回结果:如何模拟天生的SQL COALESCE语句的功能在Javascript

Select top 1 Coalesce(ColA, ColB, "No Data Found") from TableA; 

有没有一种优雅的方式来处理Javascript中的空值,这与SQL返回上述语句中的结果的方式相同?

我知道我可以在技术上有一个switch语句,但这需要一些可能不必要的代码

谢谢。

+0

的可能重复(http://stackoverflow.com/questions/476436/null-coalescing-operator -for-javascript) – l0b0 2012-04-24 13:23:50

回答

10

您可以使用OR。

var someVar = null || value; 
var otherVar = null || variableThatEvaluatesToNull || functionThatEvaluatesToNull() || value; 
+0

谢谢,我不知道你可以使用和运算符那样! – 2012-02-03 00:00:25

3

您可以使用“falsy”的价值观和||操作(逻辑OR):

var foo = bar || baz; 

如果bar计算结果为“truthy”价值baz否则以上将分配的barfoo的值(例如如果bar未定义,则为null,false等)。

+0

谢谢你这个工作得很好 – 2012-02-06 16:08:24

3

||的问题是像0这样的值,这可能是需要的。你可以编写自己的javascript函数来模拟COALESCE。

function Coalesce() { 
    var args = Coalesce.arguments; 

    for (var i = 0; i < args.length; ++i) { 
    if (null !== args[i]) 
     return args[i]; 
    } 

    return null; // No non-null values found, return null 
} 

然后你可以调用如预期:?对JavaScript空合并运算符]

var myNonNullValue = Coalesce(null, objectA, objectB, "defaultValue"); 
+0

'null!== undefined'会是真的......所以可能还想添加一个未定义的检查。 – 2015-05-26 20:21:40