在引入 ECMAScript 2015(又称 ES6)之前,JavaScript 发展的非常缓慢。但自 2015 年起,每年都有新特性添加进来。需要注意的是,不是所有特性都被现代浏览器支持,但是由于 JavaScript 编译器 Babel 的存在,我们已经可以使用新特性了。本文将介绍 ECMAScript 2020(ES11)的一些最新特性。
(不要被吓到,真的是ES11说ES6啥的都low了。今天搬砖不努力,明天回家掰苞米,加油学习)
01 Optional Chaining 可选链式调用
在以前的语法中,想要获得深层次的属性或方法,如果不做前置校验的话,那么就很容易出现这种错误↓ 这可能会导致你整个应用奔溃…
出现这样的错误,你会怎么解决呢?
TypeError: Cannot read property ‘x’ of undefined
此错误基本上意味着我们试图访问非对象上的属性。
const boy = {
character: {
outgoing: true
}
}
console.log(boy.character.outgoing) // this will work
console.log(boy.talent.singing()) // TypeError: Cannot read property 'singing' of undefined
const coolBoy = boy && boy.character && boy.character.outging && boy.talent.singing()
console.log(coolBoy);
这样…
const coolBoy = boy ? (boy.talent ? (boy.talent.singing ? (boy.talent.singing() : '') : '') : ''
console.log(coolBoy);
还是这样…
这样写显然都是比较笨重的写法,不优雅可读性也很差。
总知道怎么写的简洁优雅?往下看
可选链式调用操作符(?.)登场
当我们使用了可选链操作符,之前的代码就可以写成这样了:
const coolBoy = boy?.boy.talent?.singsing?.()
console.log(coolBoy);
瞬间高大上了有没有?当然数组函数也都可以使用
let flowers = ['lily', 'daisy',