浏览器如何优化我的JavaScript

浏览器如何优化我的JavaScript,javascript,optimization,browser,Javascript,Optimization,Browser,JavaScript是在浏览器中通过优化被解释为字节码,还是仅仅从脚本行执行 例如,我有两种方法: // function with clear defining local variables for each calculation function moreReadable(p1, p2, p3) { var a = p1 + p2; var resA = someFunction(a); // some actions with resA var b =

JavaScript是在浏览器中通过优化被解释为字节码,还是仅仅从脚本行执行

例如,我有两种方法:

// function with clear defining local variables for each calculation
function moreReadable(p1, p2, p3) {
   var a = p1 + p2;
   var resA = someFunction(a);
      // some actions with resA 
   var b = p2 + p3;
   var resB = someFunction(b);
      // some actions with resB
   var c = p1 + p3;
   var resC = someFunction(c);
      // some actions with resA
}

// function which reuses first declared variable, for all calculations
function optimized(p1, p2, p3){
   var a = p1 + p2;
   a = someFunction(a);
      // some actions with a
   a = p2 + p3;
   a = someFunction(a);
      // some actions with a
   a = p1 + p3;
   a = someFunction(a);
      // some actions with a
}
第二种方法在性能或内存使用方面会给我带来优势吗?它显然使用较少的局部变量。
但是做优化有意义吗?Chrome会将两者优化为相同的执行代码吗?

我建议您阅读以下关于Chrome使用的V8 Javascript引擎的文章:

当然,引擎会进行优化,但这并不意味着它会优化代码

这是一篇相当大的文章/维基,但通过理解引擎,它将帮助您更好地理解JS如何解释为字节码

现在,关于您的代码示例,您只是在解决可读性问题,性能不会得到提升。JS是一种非常奇怪的语言,尽管它很简单。这意味着一些时间更少的代码更好,而有些时候不是

这一切都会在代码复杂性和体系结构中结束

尽管如此,根据您的代码库/项目,您应该测量性能并调整它以获得更好的结果;)


希望有帮助。

这个问题很难给出绝对确定的答案。 首先,变量声明的优化依赖于JS引擎的实现

例如,Chrome的V8将JS编译为机器代码,使用:quick and optimized

JS函数是使用优化的编译器编译的,当V8理解到函数经常使用时,就有理由花更多的时间在编译上以获得函数使用的时间。在这种情况下,moreReadable()和optimized()函数之间肯定没有区别


谈到V8的quick(基本)编译器,我认为它并不是绝对盲目地编译,因此比较函数也可能产生相同的机器代码。为了确保编译这两个函数并比较生成的机器代码是必需的。但这不是一个5分钟的任务。

“但是做优化有意义吗?”–不是在这个级别上,没有。即使浏览器没有优化它,你也保存了4个局部变量,这实际上没有任何效果。优化的第一条规则:决不要盲目地做,测量。然后在提问之前先读一点关于某个主题的内容。我不是在问第一种或第二种方法的意义!这是一个简单的例子,所以找到它的唯一方法就是测量。谢谢你没有回答。你帮了我的忙。A.lot@AndriiBogachenko你检查过了吗?那么,我的回答对你来说合适吗?我已经检查过了,这确实是一个很好的解释。事情是如何运作的,至少在V8中是这样。很高兴听到:)