JavaScript(ECMAScript5)严格模式是否具有显着的性能优势,值得广泛使用?

时间:2011-01-25 21:48:01

标签: javascript ecmascript-5

我正在阅读使用Strict Mode for JavaScript的一些内容,一般来说,似乎是在编码器上强制使用一组更严格的规则,以确保JS引擎能够更好地优化代码。它几乎就像是Visual Basic中的“Option Explicit”等效的JavaScript。

如果这基本上是将严格模式应用于我的代码的净效果,那么性能差异是否值得用于习惯而不是逐案?除了代码稳定性还有其他优势可能值得考虑吗?

我想将严格模式应用于我的脚本有哪些主要原因?

3 个答案:

答案 0 :(得分:6)

嗯,严格的模式代码当然可以表现更好,因为它可以消除使优化更加困难的问题,例如,从我的头脑中开始:

  • 删除了with语句(真的很难 - 不是不可能 - 要优化)。
  • 不再有未宣布的任务和其他禁令,例如: (delete varName;
  • eval不会将变量/函数声明引入本地范围。
  • arguments.callee已被删除,(难以优化(例如函数内联))
  • 名为properties的arguments对象索引不再动态映射到指定的形式参数。

答案 1 :(得分:1)

我认为使用它的原因很好地由John Resig http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/详细说明,看起来Firefox会支持它,http://whereswalden.com/2010/09/08/new-es5-strict-mode-support-now-with-poison-pills/,所以看看它至少是有用的,至少对于图书馆。

但是,基本上,它是为了帮助防止一些常见的编程错误,但是对于一些失去eval的人可能有理由不使用它,而对于我来说,没有未命名的匿名函数将是困难的,但是,任何有助于减少错误的事情都是值得的。

答案 2 :(得分:0)

我不知道表现是否值得,但我猜您的结果可能会有所不同。我想这取决于你的脚本。但这并不意味着成为主要观点,而是减少维护代码的时间。因此,任何可以节省时间(和金钱)维护代码并使其更快的内容都是很好的。

我已经纠正了,遗憾的是,它不包括强类型。研究人员花了很多年时间来强制打字以在编译时检测错误,现在我们必须相信我们的代码是好的,或者通过手工或单元测试来验证。恕我直言,在单元测试中花费的时间在许多地方通常很少,而且不应该花在编译器可以完成的事情上。