“use strict”仅用于调试?

时间:2012-06-11 19:55:38

标签: javascript minify use-strict

我想知道当我完成编程并将我的JavaScript文档发布给任何人看时,是否真的有必要包含"use strict"。我喜欢使用它,因为要检查我的编码是否很好。

那么,当我为公众发布JavaScript文件时,是否应该包含或仅删除使用"use strict"

我要问的是在我的JavaScript文件中节省空间。

4 个答案:

答案 0 :(得分:9)

我发现了两个关于在生产中使用strict mode的意见:

  

没有理由在您的生产代码中发布“use strict”。没有性能提升(不久前在V8团队和Brendan验证过),我也不需要用户的VM进行额外的检查。保持它的开发,在构建期间将其剥离。这样您还可以避免引用的连接问题。

  

可能没有性能提升,但也没有性能损失。在生产中,甚至比开发中更多的是你想要确定你注意到错误的地方。最大限度地减少代码的开发版本和生产版本之间的变化是能够快速有效地调试问题的关键。是的,它在开发过程中有所帮助,但没有理由将其从生产代码中删除。

The source is in the comments at the bottom

当然,12b "use strict"的重量不会改变一件事。

答案 1 :(得分:2)

"use strict";组成了13个字节的文件。我建议这甚至不可能达到文件大小的1%。

如果您担心带宽,请使用其中一个缩小器来减少文件大小,以及服务器端的gzip压缩。手动删除13个字节是错误的经济。

究竟哪个缩小器可能取决于您的代码,但here are some suggestions

答案 2 :(得分:2)

当然它是一个微优化,但是如果你将JS模块连接在一起(例如25个),那就是突然的250字节。

在高流量应用程序中部署到生产,例如每分钟1000次点击,如果您的构建删除'use strict';

,则可以阻止每年130 + Gb的流量

我确信这会在AWS上节省一些钱......

除了不值得花时间之外,我还没有看到一个令人信服的论据让它继续投入生产。它可能不是,但是如果你已经拥有一个构建系统,并且只需要很少的努力就可以实现这一目标,为什么不呢?

答案 3 :(得分:0)

我目前建议您删除任何用于生产的代码中的“use strict”(并在调试中使用它)。

但是,我不会删除它只是为了使文件更小。我删除它的原因是因为它在执行时似乎对JavaScript的实际性能有负面影响。希望这最终会改变,但是现在我会因为性能原因而忽略它。