2017-04-07 57 views
-2

我有發送回像這樣的對象的服務器響應:速記避免falsy 0值

{ 
success: integer 
} 

在客戶端,我有

return body && body.success; 

的問題是,整數可以是零,在這種情況下,上述將返回body而不是body.success

什麼是我可以用來總是返回值的最佳速記?

+0

它在任何情況下返回的數值。 「在這種情況下,上述將返回'body.success'而不是'body.success [0]'。」。 - - 這不是真的。 – zerkms

+0

@plalx抱歉,我沒有關注你在說什麼 –

+0

我簡化了這個問題,我認爲現在很容易理解,謝謝 –

回答

-1

將這項工作:

return body && (typeof body.success !== "undefined" ? body.success : false); 

括號可能是不正確的,但這應該檢查被定義的身體嗎?如果是這樣,是否定義了body.success?如果沒有返回正文。

如果body.success已定義,則返回body.success。如果沒有,則返回主體。

它可以這樣寫:

If (body) 
    return (typeof body.success !== "undefined" ? body.success : body); 
else return false; 
+0

注意,這個問題要求'最好的簡寫' - 儘管你的代碼在技術上是正確的,但最好的簡寫形式是'return body && body.success;' - 儘管如此,你現在正在編輯它,多餘的 –

+1

更多'typeof'檢查類型檢查的神! – zerkms

0

你應該總是在後臺初始化屬性。我會設置爲「-1」。

function ajaxCall() { 
 
    return { success: true, id: 10 }; 
 
    //return null; 
 
} 
 

 
function GetData() { 
 
    var myData = ajaxCall(); 
 

 
    if (typeof myData === "undefined" 
 
    || myData == null 
 
    || typeof myData.success === "undefined" 
 
    || myData.success == null) { 
 
    return { success: false, id: 0 }; 
 
    } 
 

 
    return myData; 
 
} 
 

 
var body = GetData(); 
 

 
// init 
 
(function(){ 
 
document.getElementById("MyMessage").innerHTML = ((body.success) ? "Success - " + body.id : "Failed") ; 
 
})();
<div id="MyMessage"></div>