我的JS代码有什么区别?

时间:2014-08-09 14:14:33

标签: javascript jquery

这是我写的一段代码,我的同事用另一种方式改变了我的代码,请问这两种方法是否具有相同的效率?我认为它们具有相同的效率。哪种更好?

我的功能

<script>
var $count = $("#count");
function(){
    var i=0,j=0;k=0,count =0;
    for(i;i<10;i++){
        for(j;j<100;j++){
             for(k;k<1000;k++){
                  $count.text(count++);
             }
        }
    } 
</script>

其他功能

<script>
var $count = $("#count");
function(){
    var i=0,j=0;k=0,count =0,
           tempCount= $count ;
    for(i;i<10;i++){
        for(j;j<100;j++){
                  for(k;k<1000;k++){
                        tempCount.text(count++);
                  }
        }
    } 
</script>

1 个答案:

答案 0 :(得分:4)

我能看到的唯一区别是他们将全局$count变量分配给变量tempCount,该变量是函数的本地变量。这为每次需要访问$count时节省了一个步骤,因为没有tempCount它将首先在本地范围内找不到$count,然后继续检查全局范围。由于这种情况发生了很多次,我相信他们的代码应该更有效率。您始终可以使用console.timeconsole.timeEnd进行检查。

有关JavaScript范围的更多信息,请参阅this question


编辑在测试时,似乎此示例中的两个函数显示的性能基本相同,至少在更正for循环以重置j和{{1 }为零,导致1000000个周期而不是1000个(见注释)。

但是,我仍然建议,一般来说,优先选择局部变量或全局导入而不是隐含全局变量,以获得清晰度,如果不是性能的话。你可以看到this article的“全球导入”部分,以解释我的意思。

相关问题