網站建設之優化JS的技巧
標簽:
網站優化
2017.04.16
JS的合稱是JavaScript,它是一種直譯式腳本語言,同時也是一種動態類型、弱類型、基於原型的語言,內置支持類型。JS在瀏覽器中有自己的解釋器,被稱為JavaScript引擎,它屬於瀏覽器的一部分。JS在實用應用中被廣泛的用於客戶端的腳本語言,最早的是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。
JS的基本特有有哪些?
1、是一種解釋性腳本語言(代碼不進行預編譯)。
2、主要用來向HTML(標準通用標記語言下的一個應用)頁麵添加交互行為。
3、可以直接嵌入HTML頁麵,但寫成單獨的js文件有利於結構和行為的分離。
4、跨平台特性,在絕大多數瀏覽器的支持下,可以在多種平台下運行(如Windows、Linux、Mac、Android、iOS等)。
雖然現在的技術還是很弱,但是對於如何優化JavaScript還是有一定的技巧可循的,下麵分形科技就與大家分享一些網站建設之優化JS的技巧。
循環在JS中是很常用的一個控製結構,大部分東西要依靠它來完成,在JavaScript中,我們可以使用for(;;),while(),for(in) 三種循環。但事實上,這三種循環中for(in)的效率極差,因為他需要查詢散列鍵,如果可以分形科技建議大家盡量少用。
for(;;)和while循環的性能應該說基本(平時使用時)等價。而事實上,如何使用這兩個循環,則有很大講究。
網站建設之優化JS的技巧
1、如果是循環變量遞增或遞減,不要單獨對循環變量賦值,應該在它最後一次讀取的時候使用嵌套的++或—操作符。
2、如果要與數組的長度作比較,應該事先把數組的length屬性放入一個局部變量中,減少查詢次數。
3、局部變量和全局變量
jububianliangdesuduyaobiquanjubianliangdefangwensudugengkuai,yinweiquanjubianliangqishishiquanjuduixiangdechengyuan,erjububianliangshifangzaihanshudezhandangzhongde。haiyou,jububianliangpingbiquanjubianliang。
4、最好少使用Eval,使用eval相當於在運行時再次調用解釋引擎對內容進行運行,需要消耗大量時間。所以建議不使用。
那在什麼時候使用呢?
比如AJAX返回是JS代碼,當我們想讓這段代碼執行,那麼此時就可以使用eval。
5、減少重複查找
因為JavaScript的解釋性,所以a.b.c.d.e,需要進行至少4次查詢操作,先檢查a再檢查a中的b,再檢查b中的c,如(ru)此(ci)往(wang)下(xia)。所(suo)以(yi)如(ru)果(guo)這(zhe)樣(yang)的(de)表(biao)達(da)式(shi)重(zhong)複(fu)出(chu)現(xian),應(ying)該(gai)盡(jin)量(liang)少(shao)出(chu)現(xian)這(zhe)樣(yang)的(de)表(biao)達(da)式(shi),可(ke)以(yi)利(li)用(yong)局(ju)部(bu)變(bian)量(liang),把(ba)它(ta)放(fang)入(ru)一(yi)個(ge)臨(lin)時(shi)的(de)地(di)方(fang)進(jin)行(xing)查(zha)詢(xun)。
這一點可以和循環結合起來,因為我們常常要根據字符串、數組的長度進行循環,而通常這個長度是不變的,比如每次查詢a.length,就要額外進行一個操作,而預先把var len=a.length,則就少了一次查詢......
JS的基本特有有哪些?
1、是一種解釋性腳本語言(代碼不進行預編譯)。
2、主要用來向HTML(標準通用標記語言下的一個應用)頁麵添加交互行為。
3、可以直接嵌入HTML頁麵,但寫成單獨的js文件有利於結構和行為的分離。
4、跨平台特性,在絕大多數瀏覽器的支持下,可以在多種平台下運行(如Windows、Linux、Mac、Android、iOS等)。
雖然現在的技術還是很弱,但是對於如何優化JavaScript還是有一定的技巧可循的,下麵分形科技就與大家分享一些網站建設之優化JS的技巧。
循環在JS中是很常用的一個控製結構,大部分東西要依靠它來完成,在JavaScript中,我們可以使用for(;;),while(),for(in) 三種循環。但事實上,這三種循環中for(in)的效率極差,因為他需要查詢散列鍵,如果可以分形科技建議大家盡量少用。
for(;;)和while循環的性能應該說基本(平時使用時)等價。而事實上,如何使用這兩個循環,則有很大講究。
網站建設之優化JS的技巧
1、如果是循環變量遞增或遞減,不要單獨對循環變量賦值,應該在它最後一次讀取的時候使用嵌套的++或—操作符。
2、如果要與數組的長度作比較,應該事先把數組的length屬性放入一個局部變量中,減少查詢次數。
3、局部變量和全局變量
jububianliangdesuduyaobiquanjubianliangdefangwensudugengkuai,yinweiquanjubianliangqishishiquanjuduixiangdechengyuan,erjububianliangshifangzaihanshudezhandangzhongde。haiyou,jububianliangpingbiquanjubianliang。
4、最好少使用Eval,使用eval相當於在運行時再次調用解釋引擎對內容進行運行,需要消耗大量時間。所以建議不使用。
那在什麼時候使用呢?
比如AJAX返回是JS代碼,當我們想讓這段代碼執行,那麼此時就可以使用eval。
5、減少重複查找
因為JavaScript的解釋性,所以a.b.c.d.e,需要進行至少4次查詢操作,先檢查a再檢查a中的b,再檢查b中的c,如(ru)此(ci)往(wang)下(xia)。所(suo)以(yi)如(ru)果(guo)這(zhe)樣(yang)的(de)表(biao)達(da)式(shi)重(zhong)複(fu)出(chu)現(xian),應(ying)該(gai)盡(jin)量(liang)少(shao)出(chu)現(xian)這(zhe)樣(yang)的(de)表(biao)達(da)式(shi),可(ke)以(yi)利(li)用(yong)局(ju)部(bu)變(bian)量(liang),把(ba)它(ta)放(fang)入(ru)一(yi)個(ge)臨(lin)時(shi)的(de)地(di)方(fang)進(jin)行(xing)查(zha)詢(xun)。
這一點可以和循環結合起來,因為我們常常要根據字符串、數組的長度進行循環,而通常這個長度是不變的,比如每次查詢a.length,就要額外進行一個操作,而預先把var len=a.length,則就少了一次查詢......












