为什么将getElementById()的结果存储到变量而不是每次都使用该函数?

时间:2015-07-18 09:07:01

标签: javascript

考虑以下代码:

function changeImage()
{
    var image = document.getElementById('myImage');
    if (image.src.match("bulbon"))
    {
        image.src = "pic_bulboff.gif";
    }
    else
    {
        image.src = "pic_bulbon.gif";
    }
}

我不明白为什么会将getElementById()的结果存储到if语句中使用的变量,因为我们可以通过简单地使用{{1}来访问属性src每次,像这样:

getElementById()

为什么要使用变量而不是反复使用function changeImage() { if(document.getElementById("myImage").src=="pic_bulboff.gif") { document.getElementById("myImage").src="pic_bulbon.gif"; } else { document.getElementById("myImage").src="pic_bulboff.gif"; } }

1 个答案:

答案 0 :(得分:1)

var image = document.getElementById('myImage');通过引用返回一个对象并保存2个额外的"搜索"对于相同的图像,这个图像比第二个例子更慢,消费者的处理器资源更多。

更为恰当的是:

    <script>
    function changeImage()  {
        var image = document.getElementById('myImage');
        if (image) { image.src = image.src.match("bulbon")?"pic_bulboff.gif":"pic_bulbon.gif"; }
    }  
</script>