Javascript 以下是微观优化吗

Javascript 以下是微观优化吗,javascript,Javascript,我不是很好地用javascript解析,但是你会调用下面的微优化吗 for(var j=0;j < document.getElementsByTagName('a').length; j++) { //... } var Elements = document.getElementsByTagName('a'); var ElementsLength = Elements.length; for(var j=0;j < ElementsLength ; j++) { //

我不是很好地用javascript解析,但是你会调用下面的微优化吗

for(var j=0;j < document.getElementsByTagName('a').length; j++)
{
  //...
}

var Elements = document.getElementsByTagName('a');
var ElementsLength = Elements.length;
for(var j=0;j < ElementsLength ; j++)
{
  //...
}

var Elements = document.getElementsByTagName('a');
for(var j=0;j < Elements.length; j++)
{
  //...
}
for(var j=0;j
  • document.getElementByTagName真的在每个循环中都被调用吗 在第一种情况下循环
  • 浏览器是否尝试优化我们编写的javascript
  • 第二种情况和第三种情况有什么区别吗 收藏永远不会改变
在第一种情况下,document.getElementByTagName是否真的在每个循环周期中都被调用

浏览器是否尝试优化我们编写的javascript

它不会改变它的功能。在循环中调用一次函数和每次调用函数是有区别的;也许你想每次都调用这个函数。“优化”这一过程实际上改变了程序的功能

第二种情况和第三种情况之间是否存在任何差异,因为集合永远不会改变

不是功能上的,而是性能上的。访问
length
属性比从一个简单变量读取数字的开销稍大一些。也许你不会注意到,但它就在那里。这也是一种无法优化的情况,因为
元素.length
可能会在每次迭代中发生变化,这会使程序表现出不同的行为。一个好的优化者可能能够检测到属性是否在不断变化,并在确定不会变化的情况下进行优化;但我不知道有多少实现真正做到了这一点,因为这可能变得相当复杂

在第一种情况下,document.getElementByTagName是否真的在每个循环周期中都被调用

浏览器是否尝试优化我们编写的javascript

它不会改变它的功能。在循环中调用一次函数和每次调用函数是有区别的;也许你想每次都调用这个函数。“优化”这一过程实际上改变了程序的功能

第二种情况和第三种情况之间是否存在任何差异,因为集合永远不会改变

不是功能上的,而是性能上的。访问
length
属性比从一个简单变量读取数字的开销稍大一些。也许你不会注意到,但它就在那里。这也是一种无法优化的情况,因为
元素.length
可能会在每次迭代中发生变化,这会使程序表现出不同的行为。一个好的优化者可能能够检测到属性是否在不断变化,并在确定不会变化的情况下进行优化;但我不知道有多少实现真正做到了这一点,因为这可能变得相当复杂

在第一种情况下,document.getElementByTagName是否真的在每个循环周期中都被调用

浏览器是否尝试优化我们编写的javascript

它不会改变它的功能。在循环中调用一次函数和每次调用函数是有区别的;也许你想每次都调用这个函数。“优化”这一过程实际上改变了程序的功能

第二种情况和第三种情况之间是否存在任何差异,因为集合永远不会改变

不是功能上的,而是性能上的。访问
length
属性比从一个简单变量读取数字的开销稍大一些。也许你不会注意到,但它就在那里。这也是一种无法优化的情况,因为
元素.length
可能会在每次迭代中发生变化,这会使程序表现出不同的行为。一个好的优化者可能能够检测到属性是否在不断变化,并在确定不会变化的情况下进行优化;但我不知道有多少实现真正做到了这一点,因为这可能变得相当复杂

在第一种情况下,document.getElementByTagName是否真的在每个循环周期中都被调用

浏览器是否尝试优化我们编写的javascript

它不会改变它的功能。在循环中调用一次函数和每次调用函数是有区别的;也许你想每次都调用这个函数。“优化”这一过程实际上改变了程序的功能

第二种情况和第三种情况之间是否存在任何差异,因为集合永远不会改变


不是功能上的,而是性能上的。访问
length
属性比从一个简单变量读取数字的开销稍大一些。也许你不会注意到,但它就在那里。这也是一种无法优化的情况,因为
元素.length
可能会在每次迭代中发生变化,这会使程序表现出不同的行为。一个好的优化者可能能够检测到属性是否在不断变化,并在确定不会变化的情况下进行优化;但我不知道有多少实现真正做到了这一点,因为这可能会变得非常复杂。

现代浏览器会对其进行优化。所以这不会有多大区别。尽管我更喜欢使用第二种/第三种方式(如上所述)来编写本文。建议使用jsperf.com来测试性能:)@vivek_nk我不会指望这样的DOM查询优化-#2绝对是可以使用的。现代浏览器会对其进行优化。所以这不会有多大区别。尽管我更喜欢使用第二种/第三种方式(如上所述)来编写本文。建议使用jsperf.com来测试性能:)@vivek_nk我不会指望这样的DOM查询优化-#2绝对是可以使用的。现代浏览器会对其进行优化。所以这不会有多大区别。虽然我更喜欢