?.
是ES2020引入的新特性,是一个条件式属性访问操作符,当你访问值为undefined
变量的某个属性值时,如果使用.
操作符会直接报错,如果使用条件式属性访问操作符来访问会返回undefined
。
看例子:
let book = {price:10,
edition:10,
name:"javascirpt"
}
console.log(book.page.num)
直接报错
TypeError: Cannot read property 'num' of undefined
因为book.page 的值 undefined, undefined
是没有任何属性值的,所以会报错。
如果你无法确定某个值是undefined还是对象,除了可以用 if 语句来判断之外,还可以直接用条件式访问操作符来访问某个属性, 就算被访问的对象是undefined,也不会报错。而是返回 undefined
console.log(book.page?.num)
输出
undefined
关注公众号「Python之禅」,回复「1024」免费获取Python资源