使用 Javascript 可选链让代码更优雅

ECMAScript 11 中加入了可选链?.和空值合并运算符??,这两个符号的应用可以让代码更简洁和优雅。本文用几个例子说明这两个符号的使用,所有例子都来自于 root.js 标签库

可选链?.表示当前面的值不为nullundefined时才继续向下执行,否则整个表达式返回undefined。空值合并运算符??表示运算符左面的值为nullundefined时返回右面的值。下面看例子。

例一

可表示为当元素tag包含attr原生属性时,那么将属性值转成字符串,否则从标签属性列表中获取值。使用老方法,可以写成:

两个新符号将 6 行代码转成了 1 行代码。

例二

可以表述为:当选择器$('#PromptPopup')选择的元素存在且有close方法时,则执行。老办法是这样写的:

例三

可以表述为当定义了component.class时,且包含方法component.method时,那么就执行这个方法,传入参数container。其中component.classcomponent.method均为字符串。

例四

例子,events是一个 Map 对象。老办法可以写成:

例五

这个例子例子比较复杂。

核心代码是onclick+success事件,主要逻辑为:这个按钮在一个 iframe 页面中,当onclick+服务器端事件请求的接口执行完成且返回值不为0时,会触发onclick+success事件。事件的主要逻辑为:

如果没有可选链,实在没有办法将这么长的一个逻辑写成一句话放到属性值中。

(本文完)


参考链接


微信公众号
码农老吴  |  星源工作室  |  开发月志  |  问题反馈
联系我们:wu@qross.io     手机/微信:18618171102
京 ICP 备 20027445 号
$(h1)!