为什么要将getElementById()的结果存储到一个变量中,而不是每次都使用该函数呢?
Why store the result of getElementById() to a variable instead of using the function everytime?
考虑以下代码:
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
语句中使用,因为我们可以通过每次简单地使用getElementById()
来访问属性src
,像这样:
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";
}
}
为什么使用一个变量而不是重复使用getElementById()
?
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>
相关文章:
- 访问嵌套函数结构中的JavaScript父函数变量
- Javascript函数变量传递语法问题
- JavaScript 函数变量范围问题
- 在 promise 中获取构造函数变量
- 将函数结果传递给Javascript中的另一个函数变量
- 用对象设置函数变量's值
- Javascript函数变量应生成错误,而不是未定义的错误
- 我可以访问用户脚本中的匿名函数变量吗?
- 在实例化期间使用构造函数变量
- 为什么在 JavaScript 中不能用函数变量覆盖字符串变量
- JavaScript 允许调用函数访问调用函数变量
- 如何在嵌套原型中访问 JavaScript 构造函数变量
- 对函数变量的 JavaScript 控制台日志输出感到困惑
- 如何将函数变量传递给主干模型上的 jQuery 事件
- 如何访问构造函数变量
- 实例函数变量不会更改
- 为什么函数变量在变量之后是未定义的
- 用内部函数变量更改外部函数变量?Javascript
- Javascript - 使用闭包递增静态函数变量模拟
- 异步 JavaScript 静态函数变量