2012-02-02 48 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