亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript知識點總結之如何提高性能

2019-11-20 10:47:53
字體:
來源:轉載
供稿:網友

JavaScript的性能問題不容小覷,這就需要我們開發人員在編寫JavaScript程序時多注意一些細節,本文非常詳細的介紹了一下JavaScript性能優化方面的知識點,絕對是干貨。

先給大家鞏固下javascript基本語法:

javascript基本語法

定義變量統一用var關鍵字

語法:var 變量名稱=變量值

標示符:①、由字母數字下劃線構成 不能以數字開頭 不能是關鍵字 嚴格區分大小寫

數據類型:

數值型:number

字符串:string

布爾型:boolean

特殊數據類型:undefined 空的 未定義的 未賦值的

空值:null

引用類型object function

檢測參數的數據類型:typeof()返回該數據類型對應的字符串

兩個等號==和三個等號===的用法

==:比較值相等 與數據類型無關

===:比較全等 與數值和數據類型都有關

布爾環境:遇到if自動轉換成布爾值

字符串string中的布爾環境:空為假 非空為真

數值number中的布爾環境:0為假 非0為真

number與string之間的關系

①、遇到+做拼接操作

②、需要做運算操作時,要把字符串轉換成數值型

轉換方法1、字符串*1 變成數值型

轉換方法2:Number(字符串) 轉換成數值型

一:針對js文件的加載位置

在HTML文件中,<script>標簽是可以加在<head>區域和<body>區域的。這里鑒于JavaScript執行和UI渲染的單線程原因,如果js文件載入會阻塞后面對于頁面的解析過程,頁面會等到js文件完全加載并運行后才繼續執行該做的操作。那么問題就來了,這樣可能會出現頁面空白or卡頓現象。作為一名前端開發,重要的不僅僅止于實現了需求,應該還有優質的用戶體驗。那么我們就需要消除用戶枯燥的等待,針對這個問題,這里有本獸想到的兩種解決方案:

1. 如果js文件沒有特殊要求指明需要在頁面渲染之前載入及編譯完成的,那么選擇將js文件放到</body>標簽前(既所有的頁面所呈現內容的后面),css文件還是放到<head>區域(誰也不愿意看一個布局雜亂無章的頁面)。這樣做就能先讓用戶看到有布局的頁面而不是空白頁了,那么也會有人指出:那數據得通過js請求加載進來啊,怎么辦呢?可以對數據的加載做排序,急需呈現的接口放前面執行,不是那么需要的可以延后執行,同時做個簡單的載入動畫or提示。

2. 如果這些js文件有指明需要先執行了,才能更好的展示頁面內容,那么就在第一個js或者頁面上先放個載入小動畫,可以一些有趣的或者萌萌的動畫場景。這樣也是能較好的避免用戶等待的無聊,說不定人家還對這個載入動畫更感興趣呢,這樣可提升項目的用戶體驗感。

最終推薦:將<script>標簽盡可能的放到</body>標簽前面加載,以提升用戶體驗。

二:針對js文件的合并

在很多團隊開發中,我們可能會將不同功能的代碼塊分別放置在不同的js文件中,以便于開發過程中眾人合作寫代碼會更加方便,畢竟只需要找對應文件夾或文件而不是在一個很長的文件中找一個方法。這確實是會提高團隊開發效率及新人加入后的更容易進行二次開發及維護。那么將這個問題放到頁面性能里呢?這正是問題所在,在這本書中指出:Each HTTP request brings with it additional performance overhead,so downloading one single 100 KB file will be faster than downloading four 25 KB files.

下載1個100KB的文件比下載4個25KB的文件要快,而開發過程中區分開各個文件又有很大的好處,那么合并這個問題也就放在開發完后再處理咯,相信這個操作大家都不會陌生吧,現在的前端工具這么豐富,各位習慣用什么壓縮就用什么壓縮吧~

這里簡單提出下,在載入文件方面還可以用到defer和async屬性,用于延遲加載和異步加載,在現代瀏覽器中,大多數是已經支持defer屬性了,還沒習慣用這個額,也不知道具體會不會存在什么問題。有興趣的朋友可自行google該知識點,這里件簡單提下吧。

現在的框架也大多配合懶加載和按需加載了。

三:更快速的數據訪問

對于瀏覽器來說,一個標識符所處的位置越深,去讀寫他的速度也就越慢(對于這點,原型鏈亦是如此)。這個應該不難理解,簡單比喻就是:雜貨店離你家越遠,你去打醬油所花的時間就越長... 熊孩子,打個醬油那么久,菜早燒焦了 -.-~

如果我們需要在當前函數內多次用到一個變量值,那么我們可以用一個局部變量先將其存儲起來,案例如下:

//修改前function showLi(){var i = 0;for(;i<document.getElementsByTagName("li").length;i++){ //一次訪問documentconsole.log(i,document.getElementsByTagName("li")[i]); //三次訪問document};};//修改后function showLi(){var li_s = document.getElementsByTagName("li"); //一次訪問documentvar i = 0;for(;i<li_s.length;i++){console.log(i,li_s[i]); //三次訪問局部變量li_s};}; 

四:DOM操作的優化

眾所周知的,DOM操作遠比javascript的執行耗性能,雖然我們避免不了對DOM進行操作,但我們可以盡量去減少該操作對性能的消耗。

讓我們通過代碼解釋這個問題:

function innerLi_s(){var i = 0;for(;i<20;i++){document.getElementById("Num").innerHTML="A"; //進行了20次循環,每次又有2次DOM元素訪問:一次讀取innerHTML的值,一次寫入值};}; 

針對以上方法進行一次改寫:

function innerLi_s(){var content ="";var i = 0;for(;i<20;i++){content += "A"; //這里只對js的變量循環了20次};document.getElementById("Num").innerHTML += content; //這里值進行了一次DOM操作,又分2次DOM訪問:一次讀取innerHTML的值,一次寫入值}; 

五:減少Dom的重繪重排版

元素布局的改變或內容的增刪改或者瀏覽器窗口尺寸改變都將會導致重排,而字體顏色或者背景色的修改則將導致重繪。
對于類似以下代碼的操作,據說現代瀏覽器大多進行了優化(將其優化成1次重排版):

//修改前var el = document.getElementById("div");el.style.borderLeft = "1px"; //1次重排版el.style.borderRight = "2px"; //又1次重排版el.style.padding = "5px"; //還有1次重排版//修改后var el = document.getElementById("div");el.style.cssText = "border-left:1px;border-right:2px;padding:5px"; //1次重排版 

針對多重操作,以下三種方法也可以減少重排版和重繪的次數:

1.Dom先隱藏,操作后再顯示 2次重排 (臨時的display:none)

2.document.createDocumentFragment() 創建文檔片段處理,操作后追加到頁面 1次重排

3.var newDOM = oldDOM.cloneNode(true)創建Dom副本,修改副本后oldDOM.parentNode.replaceChild(newDOM,oldDOM)覆蓋原DOM 2次重排

五:循環的優化

這應該是較多人都知道的寫法了,簡單帶過即可(后面還是用代碼+注釋形式說明)~

//修改前var i = 0;for(;i<arr.lengthli++){ //每次循環都需要獲取數組arr的lengthconsole.log(arr[i]);}//修改后var i = 0;var len = arr.length; //獲取一次數組arr的length for(;i<len;i++){console.log(arr[i]);}//orvar i = arr.length;;for(;i;i--){console.log(arr[i]);}

六:合理利用二進制

如:對2取模,則偶數最低位是0,奇數最低位是0,與1進行位與操作的結果是0,奇數的最低位是1,與1進行位與操作的結果是1。

代碼如下:

.odd{color:red}.even{color:yellow} <ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul> var i = 0;var lis = document.getElementsByTagName("li");var len = lis.length;for(;i<len;i++){if(i&1){lis[i].className = "even";} else{lis[i].className = "odd";}}; 

雖說現代瀏覽器都已經做的很好了,但是本獸覺得這是自己對代碼質量的一個追求。并且可能一個點或者兩個點不注意是不會產生多大性能影響,但是從多個點進行優化后,可能產生的就會質的飛躍了~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美国产精品久久久久久久| 久久国产加勒比精品无码| 欧美激情国内偷拍| 日韩免费观看高清| 国内揄拍国内精品少妇国语| 亚洲天堂免费观看| 国产精品久久久久久久久久东京| 欧美精品久久久久| 精品国产乱码久久久久久婷婷| 亚洲v日韩v综合v精品v| 国产精品入口夜色视频大尺度| 成人久久久久久| 亚洲福利视频网| 久久国产精品影片| 欧美国产第一页| 亚洲欧洲在线视频| 久久视频免费在线播放| 91极品视频在线| 久久激情五月丁香伊人| 亚洲欧美日韩视频一区| 色在人av网站天堂精品| 久久免费成人精品视频| 久久99热精品| 国模吧一区二区| 日韩精品中文字幕在线| 91久久久久久久久久久久久| 国产精品日韩精品| 色综合久久天天综线观看| 2019日本中文字幕| 中文国产亚洲喷潮| 国产成人涩涩涩视频在线观看| 亚洲成人aaa| 欧美高清视频免费观看| 狠狠躁夜夜躁人人爽天天天天97| 欧美黑人xxxⅹ高潮交| 国产又爽又黄的激情精品视频| 亚洲国产日韩欧美在线动漫| 少妇高潮久久久久久潘金莲| 国内揄拍国内精品| 久久久999成人| 亚洲国产精品资源| 最近2019中文字幕一页二页| 日韩欧美在线国产| 欧美激情一二三| 成人国产在线激情| 国产精品一区二区性色av| 国内外成人免费激情在线视频| 日韩一区视频在线| 国产美女久久久| 精品中文字幕久久久久久| 亚洲色无码播放| 日韩不卡在线观看| 亚洲欧美制服综合另类| 日本高清不卡在线| 亚洲精品免费一区二区三区| 狠狠色香婷婷久久亚洲精品| 亚洲精品国产欧美| 中文字幕精品www乱入免费视频| 欧美激情伊人电影| 欧美日韩中文字幕日韩欧美| 欧美日韩在线观看视频| 精品女厕一区二区三区| 日韩在线不卡视频| 国产精品偷伦免费视频观看的| 国产综合在线观看视频| 欧美日本啪啪无遮挡网站| 国产日韩av在线| 国产视频一区在线| 日韩资源在线观看| 日韩精品在线免费观看| 亚洲男人av在线| 日韩av免费在线看| 狠狠色狠狠色综合日日五| 91精品国产自产在线老师啪| 国产欧美日韩免费看aⅴ视频| 欧美中文字幕视频在线观看| 亚洲人成自拍网站| 日韩av在线免费观看| 欧美大秀在线观看| 国产精品久久久一区| 精品色蜜蜜精品视频在线观看| 日本精品久久电影| 国产精品中文字幕在线观看| 欧美插天视频在线播放| 久久国产一区二区三区| 国产精品爽黄69| 亚洲天堂av综合网| xxxx性欧美| 欧美日韩加勒比精品一区| 亚洲精品国产综合久久| 中文字幕久久亚洲| 国产精品h片在线播放| 91精品国产高清自在线看超| 日韩一区二区久久久| 亚洲成人激情在线观看| 精品久久久一区| 亚洲激情 国产| 国产手机视频精品| 久久久久国产视频| 中文字幕精品视频| 久久影院在线观看| 一区二区成人av| 国产精品久久久av久久久| 国产欧美日韩最新| 91在线观看免费观看| 精品国产精品三级精品av网址| 亚洲日韩欧美视频一区| 亚洲电影成人av99爱色| 欧美性猛交xxxx乱大交| 久久免费视频网站| 成人黄色在线播放| 日产精品久久久一区二区福利| 精品成人在线视频| 91精品国产亚洲| 国产成人亚洲精品| 亚洲天堂av图片| 欧美国产一区二区三区| 久久久999国产精品| 91久久国产精品91久久性色| 亚洲精品狠狠操| 国产亚洲一区二区精品| 日韩精品视频免费专区在线播放| 亚洲美女av网站| 亚洲久久久久久久久久| 黄色成人av在线| 久久综合久久美利坚合众国| 国产91精品不卡视频| 国产精品99久久久久久白浆小说| 亚洲成人av片| 色小说视频一区| 久久影视三级福利片| 中文字幕久久久| 国产91精品黑色丝袜高跟鞋| 欧美日韩在线视频首页| 久久久伊人欧美| 97超级碰在线看视频免费在线看| 久久久久这里只有精品| 色综合老司机第九色激情| 欧美韩日一区二区| 日韩av高清不卡| 欧美亚洲国产另类| 亚洲精品www久久久久久广东| 国产美女精品视频免费观看| 欧美日韩在线观看视频小说| 成人福利网站在线观看| 久久久爽爽爽美女图片| 久久久人成影片一区二区三区| 亚洲成人激情在线观看| 亚洲福利在线视频| 亚洲美女在线观看| 亚洲一区二区三区毛片| 久久99精品久久久久久琪琪| 91精品国产高清自在线| 久久这里只有精品视频首页| 国产精品一二三在线| 亚洲夜晚福利在线观看| 免费91麻豆精品国产自产在线观看| 欧美成人四级hd版| 91精品久久久久久久久不口人| 欧美激情在线有限公司| 国产精品91视频| 亚洲精品成人av| 久久精品视频中文字幕| 成人黄色av网站|