美文网首页
ES2020新特性?? ?.

ES2020新特性?? ?.

作者: xiudaozhe | 来源:发表于2020-07-09 14:43 被阅读0次

专心搞前端的第9天

今天遇到一题让我一脸懵逼的面试题。

var obj = {};
var x = +obj.yideng?.name ?? '京程一灯'
console.log(x);

完全看不懂怎么办,怎么那么多奇怪的???
网上搜了好久都没找到,后来灵机一动,想到这会不会是es2020的东西。网上找了下es2020,果然如此。
在对象具有多层级属性时,以前都使用.来连接。如

var a = {}
console.log(a.b)
//如果a不存在b属性,则输出undefined

但如果层级多余2个的情况。如上述判断a.b.c是否存在

var a = {}
console.log(a.b.c)
//则会报a.b undefined的错误。
//这种情况很常见,以前常用做法是用短路语法一层层过滤下去
a && a.b && a.b.c

现在有了?.可选链操作符后就方便多了。可直接写

a?.b?.c
//如果不存在a.b.c就会返回undefined,不会报错(写成a.b?.c不会报错,因为a.b返回undefined)

至于题目中的??是es2020新增的空位合并操作符。

a??b
//如果a为null或undefined,则返回b,否则返回a。与||的区别在于??只对null和undefined返回b,对于‘’ 0 false之类的返回a
null ?? 1   // 1
undefined ?? 1 //1
NaN ?? 1 //NaN
0 ?? 1 //0
'' ?? 1 // ''

null || 1 //1
undefined || 1 //1
NaN || 1  //1
0 || 1  //1
'' || 1 //1

相关文章

  • ES2020 新特性

    ES2020已经落地了,其中几个新特性实用性还是不错的,这就意味着,现在对 ES2020 中 Javascript...

  • ES2020新特性?? ?.

    专心搞前端的第9天 今天遇到一题让我一脸懵逼的面试题。 完全看不懂怎么办,怎么那么多奇怪的???网上搜了好久都没找...

  • ES2020新特性

    可选链操作符(Optional Chaining) 作用:让我们在查询具有多个层级对象时,不再需要进行冗余的各种前...

  • es2020新特性

    文章来源:方凳雅集 前言自从ES6发布之后,TC39这个负责开发ECMAScript标准的机构每年都会发布新特性。...

  • ES2020新特性

    可选链 (Optional chaining) 可选链 让我们在查询具有多层级的对象时,不需要再进行冗余的各种前置...

  • es2020新特性

    ES2020 是 ECMAScript 对应 2020 年的版本。这个版本不像 ES6 (ES2015)那样包含大...

  • ES2020新特性

    https://kangax.github.io/compat-table/es6/ 查询各个浏览器对ES的支持:...

  • ES2020新特性

    前言 ES2020 是 ECMAScript 对应 2020 年的版本。这个版本不像 ES6 (ES2015)那样...

  • ES2020新特性

    Promise.allSettled优势: 在并发任务重,任务异常或者正常,都会返回对应的状态(fulfilled...

  • ES2020新特性

    https://github.com/tc39/ecma262/commit/248851026c4690c8dc...

网友评论

      本文标题:ES2020新特性?? ?.

      本文链接:https://www.haomeiwen.com/subject/gtzjcktx.html