对象属性访问问题
特别是服务端返回的数据,如果碰到数据出错,就可能造成页面无反应、白屏等问题:
const getList = async () => {
// 假装拿了服务端的数据,并返回了
return {
code: ,
data: {
list: null,
page: ,
count: ,
},
};
};
getList()
.then((res) => {
// 取出数据
const { data } = res;
const { list, page, count } = data;
list.forEach(() => {
// 处理一些业务
});
// 抛错:TypeError: Cannot read property 'forEach' of null
// alert 不会执行
alert('获取数据成功');
});
所以在使用的时候,最好可以判断或者处理一下不可靠的数据。
// 使用 if 判断
// ...
if (list) {
list.forEach(() => {
// 处理一些业务
});
} else {
// ...
}
// ...
新的 ECMAScript
标准提供了可选链和双问号操作符来更好的处理这个问题。
const object = {
a: {
b: ,
c: {
d: ,
},
},
};
const f = object.a?.b?.c?.d?.e?.f ?? ;
console.log(f); // 输出:10
关于这个知识点不再展开,可以参考 ES6+
相关的 Wiki
。