JavaScript关键字`with`是否真的被弃用了?

时间:2018-02-15 15:20:35

标签: javascript

使用JavaScript with语句很长一段时间以来一直被认为是错误的编码实践,并被建议不要使用。

This page表示不推荐使用with并在严格模式下抛出错误,我的浏览器在严格模式下使用with时会抛出错误,并且Google Closure Compiler会抛出错误指示严格模式不允许with

JSC_USE_OF_WITH: The with statement cannot be used in strict mode.

According to MDN,建议避免使用with,但截至今天,does not appear to be actually deprecatedit does not appear to be included in examples of code restrictions of strict mode

这看起来有点矛盾和混乱。那么,with是否真的被弃用了?

1 个答案:

答案 0 :(得分:5)

TC39小组(发布ECMAScript规范的人)的官方立场是富有洞察力的:

  

为什么我们不弃用功能?

     

弃用不适用于网络。由于我们can't remove bad features,开发人员没有动力停止使用某个功能,因为某个人不喜欢它。标记功能“弃用”而不删除它们毫无意义。

     

http://tc39wiki.calculist.org/about/faq/#deprecate

因此,它可能永远不会被ECMAScript标准正式弃用;然而,在社区内,with不好的共识足够强大,以至于如果您选择严格模式和/或选择使用某些特定模式,那么大型参与者(即编译器和引擎实施者)已选择将其视为已弃用严格的编译器。