与以下方法中的变量交互是否会导致性能下降

时间:2011-08-30 13:49:22

标签: javascript jquery performance

好的,所以我引用了存储在变量中的div,我们称之为div_var

现在我想做点什么;我可以通过以下两种方式引用它;

div_var.animate()......
$(div_var).animate().....

第一种方式显然更容易,唯一的问题是我的代码编辑器(Komodo)不会为它提供任何代码提示/代码完成。第二种方式给了我完整的代码提示,但我不知道我是否因此而受到性能影响。

2 个答案:

答案 0 :(得分:0)

菲利克斯克林是正确的,它更慢。我创建了一个简单的测试

<强> HTML

<html>

<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="test.js"></script>
</head>

<body style="width: 600px;">
    <p class="t1-start">1</p>
    <p class="t2-start">1</p>
</body>

</html>

JS(test.js)

jQuery(document).ready(function($) {

var num = $('.t1-start')
var num2 = $('.t2-start')

firstCount()    

function firstCount(){
    var time = new Date()
    var start = time.getTime()

    for (var i=0; i < 10000; i++) {
        $(num).append(' 1');
    }
    var time2 = new Date()
    var end = time2.getTime()
    var leng = end - start;
    var leng_string = '<h1>'+leng+'</h1>'
    $(num).replaceWith(leng_string)

    secondCount()
}

function secondCount(){
    var time = new Date()
    var start = time.getTime()

    for (var i=0; i < 10000; i++) {
        num2.append(' 1');
    }
    var time2 = new Date()
    var end = time2.getTime()
    var leng = end - start;
    var leng_string = '<h1>'+leng+'</h1>'
    $(num2).replaceWith(leng_string)
}

})

第一个循环一直慢约15-20%。

答案 1 :(得分:-1)

如果div_var已经是jQuery对象,那么再次将它传递给jQuery是多余的。

它是否对性能有影响取决于您的应用程序。事实上,这是一个额外的,不必要的函数调用。