由于ES6的发布,我想改进代码:
// Ex: 1
response = false;
// Ex: 2
response = {};
// Ex: 3
response = {list: []};
// Ex: 4
response = {list: [{text: false}]};
// Ex: 5
response = {list: [{text: "some text"}]};
if (response && response.list && response.list.length>0 && response.list[0] && response.list[0].text){
// Some actions
}
if (response && response.list && response.list.length >= 64){
// Some actions
}
如何在不重复的情况下缩短此代码:
response && response.list && response.list.length>0 && response.list[0] && response.list[0].text
答案 0 :(得分:1)
可以将其缩短为
try {
if (response.list[0].text) ...
} catch (err) {}
但不建议在性能关键的地方使用它。
Lodash / Underscore get
已具备此功能且可以使用(可作为单独的lodash.get
包提供):
if (_.get(response, 'list[0].text')) ...
答案 1 :(得分:0)
不幸的是,如果你不止一次需要obj
,你就不能缩短standardize = function(obj){
obj$x <- obj$x / max(obj$x)
obj
}
但你可以将它放入函数的评论中提到的ss。
if-statement
您不需要在其他任何地方重复statement
,您可以通过以下方式使用它:
function isResponseOk(response){
return (response && response.list && response.list.length>0 && response.list[0].text);
}