34

在我撰写本文时, ECMAScript 5处于最终草案中;这是由于包含一个严格模式,它将阻止您分配给全局对象、使用 eval 和其他限制。(John Resig 的文章是一个很好的介绍。)

这种神奇的理智保存模式是通过在文件(或函数)的顶部包含字符串“use strict”来触发的。但是,在旧环境中,“use strict”是无操作的。如果您添加“使用严格”并且不在严格的环境中对其进行测试,您可能会留下一个不严格的代码的定时炸弹,当它真正遇到严格的环境时会中断。

哪些环境实际上尊重“使用严格”?

4

4 回答 4

26

更新

请参阅我的兼容性表

原始回复

目前没有。

今年夏天, Raphael Speyer 正在为 Rhino 进行 Mozilla 实施,而且 afaik,他们的实施已经接近完成。

我知道(基于来自 ES-discuss list 的信息)微软计划将一些 ES5 功能包含到即将发布的 IE 版本中,并且他们现在很可能正在致力于严格模式的实现(您可能知道,IE8 已经包含了一些ES5 的特性,比如Object.defineProperty)。

还有Google 的 Caja 项目,它在某些变体(Valija、Cajita 等)中在一定程度上模拟了严格模式的行为。

Crockford 最近也将此选项添加到JSLint,但我不确定它是否真的会触发任何额外的验证(根据 ES5 严格规则)。

于 2009-09-14T21:09:52.437 回答
12

现在它已经真正发布了,Firefox 4 是“第一个支持 ES5 严格模式的浏览器”的赢家。现在你可以开始使用它了,只要你在 Firefox 4 中测试。


Safari 5.1+ 和 Chrome 13+ 也支持严格模式。


第一个在:Besen。在德尔福中实现。我认为它是独立的,但我不确定。但它确实支持严格模式。

通过此兼容性表找到。


Jurassic声称支持 ES5 严格模式。

于 2010-07-11T05:14:42.520 回答
9

ECMAscript 5 严格模式要求主流浏览器(或更高版本)的这些版本:

Chrome 13.0
Safari 5.1
Firefox 4.0
Internet Explorer 10.0
Opera 11.6

不,IE9 没有严格的支持,它是 10 或更高版本的新功能。

于 2011-08-28T23:16:32.553 回答
1

Opera 11.60 已经完全支持 ECMAScript 5.1 和它的严格模式变化。请参阅@kangax 兼容性表。

于 2011-12-29T18:33:24.800 回答