可选链是ES2020新引入的功能,目前处于ECMAScript Proposal Stage 4阶段,将陆续登陆各大浏览器(目前可通过勾选chrome的Experimental JavaScript功能体验该功能)。
本人在其Stage 2阶段开始关注,算是最期待的一个新功能之一。
语法如下:
window?.console?.log?.("Hello");
该代码可解读为
如果
window
存在,则其取console
属性,如果console
存在,则取其log
属性,如果log
存在,则将其作为方法调用。
如果该链任意一环节不存在,则忽略整个链并返回undefined
。
在ES2020以前若要实现类似逻辑,可以使用以下方式:
window && window.console && window.console.log && window.console.log("Hello");
该功能在获取一个多层嵌套对象的属性,并且上层对象可能不存在时非常有用,比如 user.data?.extraData?.phone
,如果data
、extraData
有可能不存在,我们不需要判断其是否存在就可以取其phone
值,会减少很多逻辑判断和冗余代码。
个人觉得该功能会影响代码的规范性,造成代码的可读性变差,建议只在处理网络传输数据时使用。
本文向大家介绍你知道什么是CSS-in-JS吗?说说你对它的了解相关面试题,主要包含被问及你知道什么是CSS-in-JS吗?说说你对它的了解时的应答技巧和注意事项,需要的朋友参考一下 CSS in JS简介 简单说,就是一句话,不要写"行内样式"(inline style)和"行内脚本"(inline script)。
本文向大家介绍说说你对js沙箱的理解,它有什么应用场景?相关面试题,主要包含被问及说说你对js沙箱的理解,它有什么应用场景?时的应答技巧和注意事项,需要的朋友参考一下 在微前端有用到js沙箱,例如qiankun框架,主应用的js运行和子任务的js运行不会相互影响,是使用es6的proxy来实现的
本文向大家介绍说说你对短链接的理解,它有什么应用场景呢?相关面试题,主要包含被问及说说你对短链接的理解,它有什么应用场景呢?时的应答技巧和注意事项,需要的朋友参考一下 短链接的理解就是,在进行三次握手建立链接之后,发送数据包并且获得服务器返回结果之后之后,再进行第四次握手关闭断开。 应用场景是区别于长连接(即在非服务端超时或者客户端主动断开的情况下,不断开链接),常用于低频率请求,页面刷新不频繁的
本文向大家介绍你知道什么是流体排版吗?说说它的原理是什么?相关面试题,主要包含被问及你知道什么是流体排版吗?说说它的原理是什么?时的应答技巧和注意事项,需要的朋友参考一下 在文档流中,内联元素按内联方向显示,即词语在依据文件写作模式的句子中表示的方向。块元素则一个接一个地显示,就像该文档的写作模式中的段落一样。因此在流体排版中,内联元素从左边开始一个接一个地显示,块元素从顶部开始向下显示并移动页面
本文向大家介绍你用过Navigator.sendBeacon()吗?说说它有什么应用场景?相关面试题,主要包含被问及你用过Navigator.sendBeacon()吗?说说它有什么应用场景?时的应答技巧和注意事项,需要的朋友参考一下 这个方法主要用于满足统计和诊断代码的需要,这些代码通常尝试在卸载(unload)文档之前向web服务器发送数据。 https://developer.mozilla
本文向大家介绍说说你对table-layout的理解,它有什么运用场景?相关面试题,主要包含被问及说说你对table-layout的理解,它有什么运用场景?时的应答技巧和注意事项,需要的朋友参考一下 table-layout 值为 fixed时单元格的宽度只与表格,单元格的宽度有关,与内容无关 table-layout 值为 auto 时,单元格的宽度为当前列的最长行有的宽度来计算 如果想要一个t