(问题已从Webmasters移出。)
有人曾告诉我,Javascript性能最好使用一个var语句而不是多个。
即
// Version A. Allegedly Faster
var a = 1,
b = 2,
c = 3;
// Version B. Allegedly Slower
var a = 1;
var b = 2;
var c = 3;
这背后的原因是:对于每个var语句,Javascript将开始分配内存然后停在分号。然而,如果您只有一个var语句,那么许多JS实现将优化它并为同一个调用中的所有变量分配空间。从而使事情变得更快。
然而,当谷歌搜索确认这一点时,我只发现一些关于如何从维护的角度考虑第二个例子更简单的咆哮。有些人不同意。 This JSPerf test sais没有区别。
所以我的问题:从性能角度来看,A或B版本会更好吗?
(在没有编写“var”声明的情况下,你会节省几个字节,但这是在向浏览器传递数据时。这个问题包括服务器端JS)
答案 0 :(得分:5)
首先,如果没有指定涉及哪些JavaScript实现,您的问题就无法回答。性能不是语言的关注,任何人都可以编写符合规范的JavaScript实现,其中单独的var语句会更慢,因为language specification中未指定性能特征。
你提到了服务器端,所以我将假设V8,它有两个不同的JavaScript编译器。
第一个编译器会将您的源代码解析为AST,然后在为每个树节点吐出机器指令时遍历树的节点。所以不,你的var语句的语法形式可能不会影响这里的性能。
第二个编译器更加智能,并且花时间通过多个不同的表示(而不仅仅是AST)来分析代码,以便生成优化的代码。由于哑编译器已经可以看到代码具有相同的语义,因此智能代码也是如此,因此没有区别。
语义完全相同的语法差异通常不会有任何性能差异,除非存在错误。但这是一个微不足道的案例,所以我觉得很难相信任何世界级的JavaScript实现都失败了。