JavaScript关键字`with`真的不推荐使用吗?

JavaScript关键字`with`真的不推荐使用吗?,javascript,Javascript,长期以来,将JavaScript与语句一起使用一直被认为是糟糕的编码实践,并被建议不要使用 表示with已弃用,并将在严格模式下引发错误,我的浏览器在严格模式下使用with时引发错误,Google Closure Compiler会引发错误,指示严格模式不允许with: JSC_USE_OF_WITH: The with statement cannot be used in strict mode. ,建议避免将与一起使用,但从今天起,它和 这似乎有些矛盾和混乱。那么,with真的被弃用了吗

长期以来,将JavaScript
语句一起使用一直被认为是糟糕的编码实践,并被建议不要使用

表示
with
已弃用,并将在严格模式下引发错误,我的浏览器在严格模式下使用
with
时引发错误,Google Closure Compiler会引发错误,指示严格模式不允许
with

JSC_USE_OF_WITH: The with statement cannot be used in strict mode.
,建议避免将与一起使用,但从今天起,它和


这似乎有些矛盾和混乱。那么,
with
真的被弃用了吗?

TC39集团(发布ECMAScript规范的人)的这一官方立场很有见地:

我们为什么不反对功能呢? 弃用在web上不起作用。因为我们知道,开发人员没有动力仅仅因为某个地方的人不喜欢某个特性就停止使用它。将功能标记为“已弃用”而不删除它们是毫无意义的


因此,ECMAScript标准可能永远不会正式反对它;然而,在社区内,人们普遍认为
是不好的,如果您选择进入严格模式和/或选择使用某些严格编译器,大型参与者(即编译器和引擎实现者)会选择将其视为不推荐的。

最后一个链接确实包括
,第一个MDN链接明确指出,在严格模式下是不允许的。中间的MDN链接忽略了它,但它似乎是一个不完整的列表。(MDN是一个wiki,而不是一个规范。)我认为它实际上从未被禁止在严格模式下使用它。最后,真的没有理由与一起使用。@JJJ,我错过了MDN链接中的一句话,它说严格模式下不允许使用,谢谢你指出这一点。为什么不提供它作为答案?@epascarello with对于模板语言非常有用!它在Vue.js中用于向用户在html中定义的表达式中注入变量。。。如果您选择进入严格模式,您会选择将其视为已弃用–实际上,这不是一个选项。根据规范,
with
语句在严格模式下无效。玩家通常选择不优化(或取消优化)包含
with
语句的函数。