javascript - JS ECMA6 - 用于向后兼容的三元运算符

标签 javascript ecmascript-6 ternary-operator

我有一段 javascript 代码,它使用 ECMA6 数据集属性访问元素 e 的对象 data-foo 属性。不幸的是,这与 <=IE10 不兼容。为了解决这个问题,我将代码重写为使用三元运算符,在支持时使用数据集,在不支持时使用 getAttribute:

(e.dataset) ? e.dataset.foo : e.getAttribute('data-foo');

但为什么我不应该用 e.getAttribute('data-foo') 替换整行呢?当以前的标准同样出色且得到更广泛支持时,使用 ECMA6 标准的真正好处是什么?

最佳答案

首先,dataset 属性似乎不是 ES6 规范的一部分。它是 HTML spec 的一部分.

回答你的问题,

What is the real benefit of using ECMA6 standards when previous standards are just as good and more widely supported?

简单。

如您所见,在 e.dataset.fooe.getAttribute('data-foo') 这两种方法中,前者不那么冗长,因此在许多情况下是可取的。其一,它减少了您发送的 Javascript 文件的大小。

规范甚至强调了这一点:

The dataset IDL attribute provides convenient accessors for all the data-* attributes on an element. ...

[Emphasis mine]

关于javascript - JS ECMA6 - 用于向后兼容的三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52164166/

相关文章:

javascript - 当时间轴上的事件太多时,有些事件不会显示

angular - angular2中的继承

javascript - JavaScript 如何解析链式三元表达式?

java - 如果没有 else 三元运算符

javascript - 单击按钮时表单被提交两次

javascript - 如何在 SQL 中保存 OFFSET 的当前状态

javascript - 如何录制从我的流媒体服务器播放的 Electron 视频

javascript - 从平面数组创建嵌套对象

javascript - 如何访问 ES6 风格的 Angular Controller 中的作用域变量?

javascript - 如何使用三元语句来简化这段代码?