Учитывая следующий путь, я хочу вернуть «имя», если это возможно, или «» иначе:Javascript лучшая практика для серии нулевых/неопределенных проверок
countries[0].states[0].cities[0].name
Одним из вариантов является проверка шаг за шагом:
if(countries && countries[0]){
var states = countries[0].states;
if(states && states[0]){
var cities = states[0].cities;
if(cities && cities[0]){
var name = cities[0].name;
if(name){
return name;
}
}
}
}
return "";
Который многословный. Другим вариантом является обработка исключений:
try {
var name = countries[0].states[0].cities[0].name;
return name ? name : ""; // handle null or undefined
} catch(err) {
return "";
}
Но мы можем быть неудобно включать обработку исключений на обычной логике, и это также costs performance.
Есть ли еще короткий/чистый способ сделать это?