JavaScript中是否有行数限制?

6
有没有关于 JavaScript 文件行数的限制?
5个回答

15

10的121次方 / 8

由于10的121次方是宇宙中最大的比特数, 并且你可能会对JavaScript进行8位编码,因此即使整个宇宙只填充了你的空白JavaScript文件,其中也不可能超过11.25e120行。

简而言之,没有限制。


但是如果您正在使用所有位,那么您的计算机将如何尝试运行该文件?毫无疑问,应该是(10 ^ 121/8)-(用于运行计算机的位数)。 - Tom Gullen
这句话的错误也在于数据压缩是可以实现的,除此之外IE只能执行固定数量的JS虚拟机指令。 - Stefan Kendall
1
@Tom 没有提到需要计算机来运行它;) 顺便说一下,那只是舍入误差(如果你浏览一下文章,它说最大值“约为10的121次方”)。 - Jakub Hampl
1
撤销在问题中过于假设的-1。 - Eli
2
@Stefan 一个完全空白的文件,即使很长,也不会有任何VM指令,并且GZipped后几乎没有大小;)这仍然证明了我的观点,即限制在于其他方面而不是行数。 - Jakub Hampl
链接有点无用,因为它在登录墙后面。 - Aiden Cullo

5

虽然没有官方说法,但是文件越大,浏览器需要下载、解析和执行的内容就越多。

事实上,一种常见的做法是将多个JavaScript文件合并成一个文件,这样只有一个浏览器连接会被用来下载JavaScript。这通常是压缩的一部分(还可以包括其他步骤,比如将变量重命名为短名称,删除空格等)。


2
@Stefan - 所以,这是IE的限制,而其他浏览器或语言没有共享。 - Oded
1
撤销对问题的过度假设所造成的-1。 - Eli
1
@Eli - 很正确,因为@Stefan已经独自决定了问题的内容。也给你点赞 :) - Oded
你完全错了。IE确实有限制。- Stefan Kendall。那是什么??快说出来! :) 我听说有一个限制,但似乎没有人知道具体数字和可靠来源。我有一个关于IE中CSS限制的来源,但JavaScript呢? - Stijn de Witt

4
我认为 JavaScript 文件没有实际的行数限制,但显然你拥有的代码行数和 JavaScript 代码量会极大地影响性能。
因此,你询问这个问题本身可能是优化和检查代码本身的原因。也许将某些不需要在每个页面上使用的代码函数拆分到不同的文件中可以减轻负载。

2
+1,尽管性能和代码行数并没有很强的相关性 - 实际上,我可以想象对于一些复杂的函数,拥有一个巨大的预计算结果表可能比在JS中计算它们更快(用CPU时间换取空间)。但是你正确地指出了文件需要被加载和解析,如果它实际上是10MB的程序代码,那么确实可能存在一些问题 :) - Piskvor left the building

3

不,没有限制 :-)

唯一的限制是它所运行的计算机内存或运行Javascript的软件。在Javascript的设计中没有这样的限制。

然而...

如果你有成千上万行的代码,你可能需要评估你的设计并重构大部分代码,因为这可能是糟糕设计的迹象。


@Stefan,这是一个影响任何现有Javascript的理论限制还是实际限制? - Tom Gullen
这是一个实际的限制。我在处理包含大量DOM数据的页面时多次遇到过它。这不是“理论上的”,我怀疑你并没有太多接触IE。 - Stefan Kendall
@Stefan,朋友,不需要个人攻击。您只是以与其他人不同的方式解释了问题。IE并未明确提及。此外,您的示例中,大型DOM数据已停止它,而不是最初由提问者询问的JavaScript文件中的行数。请举一个在文件中的“行数”阻止IE而不是处理大量DOM数据的示例。 - Tom Gullen
3
撤销因从问题中推测过多而造成的负一分。 - Eli
1
@Tom Gullen 你说得太对了。 - Eli
显示剩余3条评论

3

实际上,如果您在IE中运行超过5,000,000行的程序,您会发现IE认为它可能被卡在无限循环中,弹出窗口提示用户杀死脚本或继续运行...


这不是行数,而是执行的VM语句数量。如果你有一个内部循环中包含复杂正则表达式的紧密代码块,即使脚本应该在子毫秒内执行,也会很快达到这个限制。 - Stefan Kendall
2
如果您有一个包含100亿行带有条件语句的文件,只有400万行会被执行,那么您就没问题了。没有行数限制,而且对其他答案进行投票是错误的。 - Wooble
阅读这篇文章于2021年。不再担心IE的问题真是太好了。 - Déjà vu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接