仅在调试中使用“严格”

"use strict" only in debug?

本文关键字:严格 调试      更新时间:2023-09-26

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

那么,当我向公众发布我的 JavaScript 文件时,我应该包含还是只是删除使用"use strict"

我问的原因是节省我的JavaScript文件中的空间。

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

没有理由在生产代码中发布"使用严格"。没有性能提升(不久前与 V8 团队和 Brendan 验证过),我也不需要用户的 VM 进行额外的检查。仅保留开发,在构建过程中将其剥离。这样,您还可以避免引用的串联问题。

和:

可能不会有性能提升,但也不会有性能损失。在生产中,甚至比在开发中更重要的是,您希望确保注意到错误。最大限度地减少代码的开发版本和生产版本之间的更改是能够快速有效地调试问题的关键。是的,它在开发过程中有所帮助,但没有理由将其从生产代码中拉出。

来源在底部的评论中

当然,"use strict"12b重量不会改变任何事情。

"use strict";行构成文件的 13 个字节。我建议这甚至不太可能接近文件大小的 1%。

如果您担心带宽,请使用众多简化器之一来减小文件大小,以及服务器端的 gzip 通信。手动删除 13 个字节是一种虚假的经济。

确切地说,哪个简化器可能取决于您的代码,但这里有一些建议。

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

在高流量应用程序中部署到生产环境,例如每分钟 1000 次点击,即如果您的构建删除了'use strict';,则可以防止每年 130+ Gb 的流量

我敢肯定,这将在 AWS 上节省几美元......

除了不值得花时间之外,我还没有看到令人信服的论据来保持生产。可能不是,但是如果您已经有一个构建系统,并且知道如何以最小的努力实现这一目标,为什么不呢?

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

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