什麼是一個簡單的方法來檢查的JavaScript如果(a.b.v.c.d.e ===真)
if (a.b.v.c.d.e === true) {}
,並返回false,如果任何的B或C或V是不確定的?
Coffeescript很容易處理它,但是什麼是香草javascript的可比解決方案?有沒有一個圖書館能夠解決這個常見問題?
什麼是一個簡單的方法來檢查的JavaScript如果(a.b.v.c.d.e ===真)
if (a.b.v.c.d.e === true) {}
,並返回false,如果任何的B或C或V是不確定的?
Coffeescript很容易處理它,但是什麼是香草javascript的可比解決方案?有沒有一個圖書館能夠解決這個常見問題?
Javascript沒有一個漂亮的功能來做到這一點(不使用任何幫助函數)。您可以使用&&
運營商要做到這一點:
if (a && a.b && a.b.v && a.b.v.c && a.b.v.c.d && a.b.v.c.d.e === true) {}
您可以使用&&
短路行爲來表達鏈接的相關性。
if (a && a.b && a.b.v && a.b.v.c && a.b.v.c.d && a.b.v.c.d.e === true)
編寫一個函數,調用它是這樣的:
if (ignoreNulls(a, 'b', 'v', 'c', 'd', 'e') == true) {
// ...
}
function ignoreNulls() {
var args = Array.prototype.slice.call(arguments);
var subj = args.shift();
while (prop = args.shift()) {
var v = subj[prop];
if (v !== null && v != undefined) {
subj = v
} else {
return null;
}
}
return subj;
}
'如果(_.get(一, 'b.c.v.c.d.e'))'用lodash。 – elclanrs
if(undefined!== a.b.c.d.e && true === a.b.c.d.e){}'如果試圖訪問任何不存在的值將返回'undifined'。 –
@Merianos,如果未定義'a','b','c'或'd',則發佈的代碼將引發異常。 –