我正在检查一个名为" token"的嵌套对象项目。是否为空,在AngularIDE中使用Angular4
if (typeof this.user.data.token !== "undefined")
这是投掷<Cannot read property 'token' of null>
我是否必须检查每个嵌套对象是否存在?
答案 0 :(得分:3)
你必须......
if (this.user && this.user.data && this.user.data.token) {
}
答案 1 :(得分:0)
当您看到 未定义 和 null 会有所不同> undefined 这意味着声明了一个变量但它没有值, null 是一个实际的赋值。 undefined也是一个类型,null是一个对象。所以..
if(!(this.user.data.token == null));
如果您想要添加一些其他条件并且操作符||
并键入下一个条件,那么应该适合您。
如果您要检查未定义的对象,可以执行类似
的操作this.user.data.token != undefined && ...
依旧......
答案 2 :(得分:0)
您可以创建一个可重用的帮助器函数,该函数检查嵌套键是否存在并返回布尔值。
/**
* @param obj: to check the nested key
* @param args: array of location to the nested key to check ['parentNode', 'childNode', 'grandChildNode']
*/
checkNestedKey(obj, args) {
for (let i = 0; i < args.length; i++) {
if (!obj || !obj.hasOwnProperty(args[i])) {
return false;
}
obj = obj[args[i]];
}
return true;
}
// to check if value exist this.user.data.token
if (this.checkNestedKey(this.user, ['data', 'token'])) {
// continue here
}