在ECMA第3阶段使用提案在统计上是否安全?

时间:2018-01-08 11:51:47

标签: javascript destructuring ecma

背景

我指的是...运营商。许多人喜欢并支持执行以下操作的想法:

const obj = { "hello": 1 };
const obj2 = { "world": 2, ...obj };

问题

我个人喜欢这种语法而不是典型的Object.assign,但是最近当我开始在我的项目中使用它时,我遇到了这个错误:

Object Spread - Parsing error: Unexpected token

可以在以下链接中看到解决方案:

这里的问题是要使用这种语法,我们需要在eslint上启用experimentalObjectRestSpread标志。此标志附有以下警告:

  

experimentalObjectRestSpread - 支持实验对象休息/传播属性(重要提示:这是一项实验性功能,将来可能会发生重大变化。建议您不要编写依赖此功能的规则,除非您愿意进行维护变化时的成本。)

在验证提案后,我意识到它已进入第3阶段:https://github.com/tc39/proposal-object-rest-spread

有关不同阶段的更多信息,请点击此处:

问题

  • S3中向后兼容性更改的概率是多少?
  • S3提出了多少提案?

1 个答案:

答案 0 :(得分:1)

  

S3中向后兼容性更改的概率是什么?

低而不返回第2阶段(参见下一个问题)。

  

S3提出了多少提案?

这种情况很少见,但确实发生了。例如,decorators在第3阶段已经有一段时间了,但已经回到第2阶段。同样,课程领域处于第3阶段,但在11月又回到第2阶段(之后又被分开了), Class Public Instance Fields & Private Instance Fields提案再次回到第3阶段,Static class fields and private static methods留在第2阶段。)

通过查看history的README.md上的https://github.com/tc39/proposals,您可以了解事情的发展方向。不过,这可能有点痛苦。

  

在ECMA第3阶段使用提案在统计上是否安全?

这取决于“统计安全”的含义。如果您想要高度确定性,请将自己限制在第4阶段。

特别是在对象休息/传播方面,它在Chrome的V8当前版本和Firefox中的SpiderMonkey运送中实现(不在标志后面)。在这里试试:

const a = {answer: 42};
const b = {question: "Life, the Universe, and Everything", ...a};
console.log(b);

在11月举行的TC39会议的the first day上,状态更新为:

  

KCL:对象传播是否可以进入es2018?

     BT:如果有人可以制作公关并在1月份议程上获得,那么我们就可以把它放进去。

......听起来像1月份的第4阶段很可能。