巧用局部變量提升javascript性能
更新時間:2014年02月24日 15:44:36 作者:
巧用局部變量可以有效提升javascript性能,下面有個不錯的示例,大家可以參考下
javascript中一個標識符所在的位置越深,它的讀寫速度也越慢。因此,函數中讀寫局部變量總是最快的,而讀寫全局變量通常是最慢的。一個好的經驗法則是:如果某個跨作用域的值在函數中被引用一次以上,那么就把它存儲到局部變量里。
例如:
<!-- 優(yōu)化前 -->
<script type="text/javascript">
function initUI () {
var bd = document.body,
links = document.getElementByTagName("a"),
i=0,
len=links.length;
while(i < len){
update(links[i++]);
}
document.getElementById("go-btn").onclick = function(){
start();
}
bd.className = "active";
}
</script>
該函數引用了三次document,而document是個全局對象。搜索該變量的過程必須遍歷整個作用域鏈接,直到最后在全局變量對象中找到。你可以通過以下方法減少對性能的影響:先將全局變量的引用存儲在一個局部變量中,然后使用這個局部變量代替全局變量。
例如:
<!-- 優(yōu)化后 -->
<script type="text/javascript">
function initUI () {
var doc=document,
bd = doc.body,
links = doc.getElementByTagName("a"),
i=0,
len=links.length;
while(i < len){
update(links[i++]);
}
doc.getElementById("go-btn").onclick = function(){
start();
}
bd.className = "active";
}
</script>
例如:
復制代碼 代碼如下:
<!-- 優(yōu)化前 -->
<script type="text/javascript">
function initUI () {
var bd = document.body,
links = document.getElementByTagName("a"),
i=0,
len=links.length;
while(i < len){
update(links[i++]);
}
document.getElementById("go-btn").onclick = function(){
start();
}
bd.className = "active";
}
</script>
該函數引用了三次document,而document是個全局對象。搜索該變量的過程必須遍歷整個作用域鏈接,直到最后在全局變量對象中找到。你可以通過以下方法減少對性能的影響:先將全局變量的引用存儲在一個局部變量中,然后使用這個局部變量代替全局變量。
例如:
復制代碼 代碼如下:
<!-- 優(yōu)化后 -->
<script type="text/javascript">
function initUI () {
var doc=document,
bd = doc.body,
links = doc.getElementByTagName("a"),
i=0,
len=links.length;
while(i < len){
update(links[i++]);
}
doc.getElementById("go-btn").onclick = function(){
start();
}
bd.className = "active";
}
</script>
相關文章
JavaScript中的Error錯誤對象與自定義錯誤類型詳解
Error是JavaScript中最原始的錯誤對象,作為各種異常的基礎對象,還有多個衍生的具體的錯誤類型,這些錯誤對象類型在nodejs中也可應用,這篇文章主要介紹了JavaScript中的Error錯誤對象與自定義錯誤類型,需要的朋友可以參考下2022-12-12
js的for in循環(huán)和java里foreach循環(huán)的區(qū)別分析
這篇文章主要介紹了js的for in循環(huán)和java里foreach循環(huán)的區(qū)別,實例分析了js的for in循環(huán)使用技巧并說明了與Java中foreach循環(huán)的使用區(qū)別,具有一定參考借鑒價值,需要的朋友可以參考下2015-01-01

