Javascript &引用;使用“严格的”;只在调试中?
我想知道,当我完成编程并向任何人发布JavaScript文档时,是否真的有必要包含Javascript &引用;使用“严格的”;只在调试中?,javascript,minify,use-strict,Javascript,Minify,Use Strict,我想知道,当我完成编程并向任何人发布JavaScript文档时,是否真的有必要包含“use strict”。我喜欢使用它,因为它可以检查我是否以良好的方式编码 那么,当我向公众发布我的JavaScript文件时,我应该包括还是删除use“use strict” 我要求的原因是为了节省JavaScript文件中的空间。行“use strict”构成文件的13个字节。我认为这甚至不可能接近文件大小的1% 如果您担心带宽问题,可以使用许多缩小器中的一个来减小文件大小,并在服务器端使用gzip压缩。手动
“use strict”
。我喜欢使用它,因为它可以检查我是否以良好的方式编码
那么,当我向公众发布我的JavaScript文件时,我应该包括还是删除use“use strict”
我要求的原因是为了节省JavaScript文件中的空间。行“use strict”代码>构成文件的13个字节。我认为这甚至不可能接近文件大小的1%
如果您担心带宽问题,可以使用许多缩小器中的一个来减小文件大小,并在服务器端使用gzip压缩。手动删除13个字节是错误的经济性
具体哪种迷你型可能取决于您的代码,但是。关于在生产中使用严格模式
,我发现了两种观点:
没有理由在生产代码中使用“严格使用”。没有性能提升(不久前与V8团队和Brendan进行了验证),我也不需要用户的虚拟机进行额外的检查。只进行it开发,在构建期间将其剥离。这样还可以避免引用的连接问题
以及:
可能不会有性能增益,但也不会有性能损失。在生产环境中,甚至比在开发环境中更需要确保注意到错误。最小化代码的开发版本和生产版本之间的更改是能够快速高效地调试问题的关键。是的,它在开发过程中会有所帮助,但没有理由将其从生产代码中删除
当然,那些12b
权重的“使用严格的”
不会改变任何事情。当然这是一个微观优化,但是如果你把(比如25个)JS模块连在一起,那就突然变成了250字节
在高流量应用程序中部署到生产环境,比如说每分钟1000次点击,这意味着如果您的构建删除了的“严格使用”,您每年可以防止130+Gb的流量代码>s
我相信这会在AWS上节省一些钱
除了不值得花时间外,我还没有看到一个令人信服的理由让它继续生产。可能不是,但是如果您已经有了一个构建系统,并且知道如何以最小的努力实现这一点,为什么不呢?我现在建议您删除任何用于生产的代码中的“use strict”(并且只在调试中使用它)
但是,我不会仅仅为了使文件变小而删除它。我之所以要删除它,是因为它当前似乎对JavaScript执行时的实际性能有负面影响。希望这最终会有所改变,但目前出于性能原因,我将省略它。“在我的JavaScript文件中节省空间”-说真的,你的JavaScript文件有多大(即使在压缩之后?)@TomaszNurkiewicz它肯定差不多满了:如果你的带宽账单太高,以至于10个字节的使用严格的打破了银行,您可能想切换ISP…@user1431627。不要再听那个“某人”的话了。永远@用户1431627。我告诉你,如果你在网站上有最小的图像,它将远远超过10公里,那家伙不知道他在说什么。你不必相信我,阅读所有其他的评论和答案…有趣的引语。关于这个问题,OP似乎已经决定保存的12个字节是值得的。我觉得很难相信,尤其是当它需要手动删除而不是作为构建过程的一部分时。存在一些不向后兼容的严格模式更改,因此在这些情况下删除声明性可能会破坏代码。但如果支持非严格的实现,这些更改可能(希望)不会以不兼容的方式使用。@amnotiam。哪些严格模式功能在非严格模式下不受支持?或者我完全失去了你。。。?您使用的是严格模式吗?是的,我使用严格模式,但我最近在服务器端做了更多的工作,所以没有兼容性问题。可能有几种,但首先想到的是函数的调用上下文。在严格模式下,它可以是任何值,包括原语,甚至是null
或undefined
,而在非严格模式下,可以保证它始终是一个对象,默认值是undefined
。另一个变化是参数
对象映射到形式参数。严格来说,它们是完全不同的值。更改参数不会影响参数
对象,反之亦然。由于gzipi,参数将大大小于250字节。我想知道是否有任何原因可以解释为什么许多JS最小化程序没有(提供选项)去掉这个参数?这是一个非常错误的参数。假设网络带宽为1美元/GB(非常高),并不像任何一个每年提供5亿个请求的网站的所有者会担心130美元/GB。@abhidivekar“5亿个请求每年”甚至没有那么高。谷歌确实做到了数万亿。如果像uglifyJS这样的工具可以做到这一点,甚至可以将包大小减少几位,我不认为这是一件坏事。我再说一遍,是的,这将是一个微观优化。