2016-05-03 49 views

回答

0

我想這應該做的伎倆:

scope.isValid = function() { 
    return (a.3 === undefined ? a.1 && a.2 : a.1 && a.2 && a.3); 
} 

你應該瞭解ternary operators,它是一個極其強大的工具,一旦你得到它的抓地力。

0

你將不得不減少正常化

(a.1 && a.2 && a.3) || (a.1 && a.2), 

,或者你可以使用數組減少找到一個非空/空值。

[a.1, a.2, a.3].reduce(function(a,b) { return b || a; }, null); 
+0

'&& a.3'無用 – Tushar

+0

'&& a.3'將'(a.1 && a.2 && a.3)'變成一個falsy值,然後按照(a.1 && a.2)',否則會返回'a.3'。 – ArcSine

+0

這意味着它是無用的。如果'a.3'錯誤,則返回'a.1 && a.2',否則返回false。這與'if(a.3){return a1 && a2&& true;} else {return a1 && a2}' – Tushar

0

這是三元運算符

return (a.3 === undefined)?(a.1 && a.2):(a.1 && a.2 && a.3); 

工作中很可能不使用它,但我認爲這種方式更具有可讀性。