最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

客戶端js性能優(yōu)化小技巧整理

 更新時間:2013年11月05日 16:11:18   作者:  
說起javascript無人不知無人不曉吧,下面是一些關(guān)于客戶端JS性能的一些優(yōu)化的小技巧,希望對大家有所幫助
下面是一些關(guān)于客戶端JS性能的一些優(yōu)化的小技巧:

1. 關(guān)于JS的循環(huán),循環(huán)是一種常用的流程控制。JS提供了三種循環(huán):for(;;)、while()、for(in)。在這三種循環(huán)中 for(in)的效率最差,因為它需要查詢Hash鍵,因此應(yīng)盡量少用for(in)循環(huán),for(;;)、while()循環(huán)的性能基本持平。當(dāng)然,推薦使用for循環(huán),如果循環(huán)變量遞增或遞減,不要單獨對循環(huán)變量賦值,而應(yīng)該使用嵌套的++或--運算符。

2. 如果需要遍歷數(shù)組,應(yīng)該先緩存數(shù)組長度var len=arr.length; for(i=0;i<len;i++),將數(shù)組長度放入局部變量中,避免多次查詢數(shù)組長度。

3. 局部變量的訪問速度要比全局變量的訪問速度更快,因為全局變量其實是window對象的成員,而局部變量是放在函數(shù)的棧里的。

4. 盡量少使用eval,每次使用eval需要消耗大量時間,特別是在循環(huán)內(nèi),json[i][變量]=1;這樣的語句可以不使用eval。

5. 盡量避免對象的嵌套查詢,對于obj1.obj2.obj3.obj4這個語句,需要進行至少3次查詢操作,先檢查obj1中是否包含 obj2,再檢查obj2中是否包含obj3,然后檢查obj3中是否包含obj4...這不是一個好策略。應(yīng)該盡量利用局部變量,將obj4以局部變量 保存,從而避免嵌套查詢。

6. 使運算符時,盡量使用+=,-=、*=、\=等運算符號,而不是直接進行賦值運算。

7. 當(dāng)需要將數(shù)字轉(zhuǎn)換成字符時,采用如下方式:"" + 1。從性能上來看,將數(shù)字轉(zhuǎn)換成字符時,有如下公式:("" +) > String() > .toString() > new String()。String()屬于內(nèi)部函數(shù),所以速度很快。而.toString()要查詢原型中的函數(shù),所以速度遜色一些,new String()需要重新創(chuàng)建一個字符串對象,速度最慢。

8. 當(dāng)需要將浮點數(shù)轉(zhuǎn)換成整型時,應(yīng)該使用Math.floor()或者Math.round()。而不是使用parseInt(),該方法用于將字符串轉(zhuǎn)換成數(shù)字。而且Math是內(nèi)部對象,所以Math.floor()其實并沒有多少查詢方法和調(diào)用時間,速度是最快的。

9.盡量作用JSON格式來創(chuàng)建對象,而不是var obj=new Object()方法。因為前者是直接復(fù)制,而后者需要調(diào)用構(gòu)造器,因而前者的性能更好。

10.當(dāng)需要使用數(shù)組時,也盡量使用JSON格式的語法,即直接使用如下語法定義數(shù)組:[parrm,param,param...],而不是采用 new Array(parrm,param,param...)這種語法。因為使用JSON格式的語法是引擎直接解釋的。而后者則需要調(diào)用Array的構(gòu)造器。

11. 對字符串進行循環(huán)操作,例如替換、查找,就使用正則表達式。因為JS的循環(huán)速度比較慢,而正則表達式的操作是用C寫成的API,性能比較好。

最后有一個基本原則,對于大的JS對象,因為創(chuàng)建時時間和空間的開銷都比較大,因此應(yīng)該盡量考慮采用緩存。

相關(guān)文章

  • js實現(xiàn)簡單的放大鏡效果

    js實現(xiàn)簡單的放大鏡效果

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)簡單的放大鏡效果,可隨意更改,放大區(qū)域的大小、比例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 微信小程序中為什么使用var that=this

    微信小程序中為什么使用var that=this

    這篇文章主要介紹了小程序中為什么使用var that=this的相關(guān)知識,本文通過示例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • webapi根據(jù)id獲取元素的實現(xiàn)思路

    webapi根據(jù)id獲取元素的實現(xiàn)思路

    掌握document.getElementById() 根據(jù)id獲取元素,在頁面畫出一個寬200 高200 粉色的盒子, 在控制臺打印這個盒子,接到這樣的需求如何處理呢,下面小編給大家分享webapi根據(jù)id獲取元素的實現(xiàn)思路,感興趣的朋友一起看看吧
    2024-02-02
  • 基于JavaScript代碼實現(xiàn)兼容各瀏覽器的設(shè)為首頁和加入收藏

    基于JavaScript代碼實現(xiàn)兼容各瀏覽器的設(shè)為首頁和加入收藏

    但是由于瀏覽器的兼容性問題,之前用的很多代碼都失去效果,下面就給出一段能夠兼容各個瀏覽器的代碼,也不能夠算是兼容,只能說在不支持的瀏覽器中能夠給出提示,對js兼容各個瀏覽器設(shè)為首頁加入收藏相關(guān)知識感興趣的朋友可以參考下本文
    2016-01-01
  • 小程序?qū)崿F(xiàn)懸浮搜索框

    小程序?qū)崿F(xiàn)懸浮搜索框

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)懸浮搜索框,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Layui 解決表格異步調(diào)用后臺分頁的問題

    Layui 解決表格異步調(diào)用后臺分頁的問題

    今天小編就為大家分享一篇Layui 解決表格異步調(diào)用后臺分頁的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • Javascript中Eval函數(shù)的使用說明

    Javascript中Eval函數(shù)的使用說明

    JavaScript有許多小竅門來使編程更加容易。 其中之一就是eval()函數(shù),這個函數(shù)可以把一個字符串當(dāng)作一個JavaScript表達式一樣去執(zhí)行它。
    2008-10-10
  • Python版實現(xiàn)微信公眾號掃碼登陸

    Python版實現(xiàn)微信公眾號掃碼登陸

    這篇文章主要介紹了Python版實現(xiàn)微信公眾號掃碼登陸,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • JavaScript html5 canvas畫布中刪除一個塊區(qū)域的方法

    JavaScript html5 canvas畫布中刪除一個塊區(qū)域的方法

    這篇文章主要介紹了JavaScript html5 canvas畫布中刪除一個塊區(qū)域的方法,涉及JavaScript結(jié)合html5操作canvas畫布圖形繪制的技巧,需要的朋友可以參考下
    2016-01-01
  • JS highcharts實現(xiàn)動態(tài)曲線代碼示例

    JS highcharts實現(xiàn)動態(tài)曲線代碼示例

    這篇文章主要介紹了JS highcharts實現(xiàn)動態(tài)曲線代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10

最新評論

西乌珠穆沁旗| 天峻县| 礼泉县| 靖宇县| 和龙市| 连州市| 泸定县| 毕节市| 康定县| 新蔡县| 苍山县| 孝昌县| 拉萨市| 鹿邑县| 太湖县| 大洼县| 合作市| 莎车县| 老河口市| 秭归县| 盐城市| 安康市| 明光市| 罗山县| 绥化市| 山西省| 浏阳市| 景宁| 苍梧县| 丘北县| 分宜县| 安远县| 佛山市| 申扎县| 申扎县| 阿拉善右旗| 萨嘎县| 西林县| 衡东县| 长乐市| 遵化市|