欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Javascript中for循環(huán)語(yǔ)句有哪些寫(xiě)法-創(chuàng)新互聯(lián)

這篇文章主要介紹了Javascript中for循環(huán)語(yǔ)句有哪些寫(xiě)法,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來(lái)公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶(hù)提供滿(mǎn)意周到的服務(wù),在本地打下了良好的口碑,在過(guò)去的十余年時(shí)間我們累計(jì)服務(wù)了上千家以及全國(guó)政企客戶(hù),如咖啡廳設(shè)計(jì)等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶(hù)的一致稱(chēng)譽(yù)。

一般寫(xiě)法如下:

for(var i = 0;i< arr.length;i++) {
 var a = arr[i];
 //...
 }

這就是一個(gè)常見(jiàn)的,正序循環(huán)的for循環(huán)。這樣寫(xiě)的缺點(diǎn)大家都明白:每次都從arr里取length與i來(lái)對(duì)比,浪費(fèi)性能(而且,要是arr的長(zhǎng)度是動(dòng)態(tài)變化的,就會(huì)出現(xiàn)死循環(huán))。改進(jìn)這個(gè)循環(huán)的辦法是用變量保存arr.length

for(var i = 0, al = arr.length;i< al;i++) {
 var a = arr[i];
 //...
 }

這樣比第一種可以略微提升點(diǎn)性能,要是數(shù)組長(zhǎng),可以提升更多。

不過(guò)這樣寫(xiě)就多了個(gè)變量al,且這個(gè)變量只在用來(lái)與i對(duì)比的時(shí)候有用,看著有點(diǎn)雞肋。

如果循環(huán)順序?qū)δ悴恢匾?,那你可以嘗試倒序循環(huán):

for(var i = arr.length-1;i > -1;i--) {
 var a = arr[i];
 //...
 }

這樣一來(lái)變量少些,且還緩存過(guò)arr長(zhǎng)度,性能也不錯(cuò)。但這里的代碼寫(xiě)得有點(diǎn)拙劣(我故意的),首先是i = arr.length-1(居然要-1,靠),然后是循環(huán)繼續(xù)執(zhí)行的條件i > -1,都讓有潔癖的人無(wú)法忍受。

下面是我常用的倒序for循環(huán)寫(xiě)法:

for(var i = arr.length;i--;) {
 var a = arr[i];
 //...
 }

這已經(jīng)非常精簡(jiǎn)了。原理需要理解一下:for循環(huán)繼續(xù)執(zhí)行的條件,是;;之間的這個(gè)判斷要為真,而這里的i–,在第一次循環(huán)進(jìn)來(lái)的時(shí)候,i=arr.length,i–值不變(為什么不變?因?yàn)橐趂or循環(huán)體里面,才會(huì)發(fā)現(xiàn)i變了);當(dāng)i=1時(shí),i- -還是1,但進(jìn)入循環(huán)體后,就是0了,所以可以正常執(zhí)行最后一次循環(huán);當(dāng)i=0時(shí),i–還是0,而0已經(jīng)不為真了,所以循環(huán)就不會(huì)繼續(xù)執(zhí)行了。

大家注意到上面的所有代碼的for循環(huán)體里,都有個(gè)var a = arr[i],用來(lái)取出當(dāng)前循環(huán)到的數(shù)組項(xiàng)。這實(shí)際上也是種浪費(fèi),且jsLint等會(huì)告訴你:不要在循環(huán)里聲明變量。。。

倒序的for可以精簡(jiǎn)至斯,但我就是要正序,而且要效率高,變量少,怎么辦?

如下:

for(var i = 0, a;a = arr[i++];) {
 //...
 }

這種寫(xiě)法好處在于:幾乎不可避免的arr.length不見(jiàn)了,前面說(shuō)的取出當(dāng)前循環(huán)到的數(shù)組項(xiàng)的那一句也不見(jiàn)了。

原理:

a = arr[i++],在這里作為循環(huán)能執(zhí)行的條件,注意這里只有一個(gè)=號(hào),所以這不是判斷句,是賦值語(yǔ)句,就是把arr[i++]賦給a,然后判斷a是不是真值。i++與i–的原理類(lèi)型我就不說(shuō)了,只說(shuō)當(dāng)i++已經(jīng)超過(guò)數(shù)組的長(zhǎng)度時(shí),循環(huán)肯定要停止才行,而這里真的就停止了,為什么?因?yàn)?code>a=arr[i++],如果取到了超出數(shù)組本身長(zhǎng)度的項(xiàng),只會(huì)取得一個(gè)undefined,而undefined是假值,循環(huán)條件就判斷失敗了。

當(dāng)然,這樣寫(xiě)的缺點(diǎn)也很明顯:

    1,當(dāng)arr的長(zhǎng)度動(dòng)態(tài)變化時(shí),依然會(huì)產(chǎn)生死循環(huán)————因?yàn)槲覀儚膩?lái)沒(méi)緩存過(guò)arr.length呀。

    2,如果循環(huán)的是一個(gè)數(shù)字?jǐn)?shù)組,當(dāng)取出的項(xiàng)(即a的值)為0時(shí),就會(huì)中止循環(huán)(因?yàn)?是假值)。

    3,當(dāng)數(shù)組中某一項(xiàng)是假值時(shí)(包括空字符串,0,null,undefined),同樣會(huì)中止循環(huán)

所以大家用這種寫(xiě)法時(shí),最好排除掉上面的情況再用。

這個(gè)原理同樣可以用在倒序循環(huán)上。

最后我要忠告大家?guī)拙洌?/strong>

  1. 代碼精簡(jiǎn)不等于效率高!

  2. 不要為了故意精簡(jiǎn)代碼而喪失性能

順帶說(shuō)幾點(diǎn)提高for循環(huán)性能的要點(diǎn):

    1,適時(shí)break!不需要遍歷全部的就要加跳出條件!

    2,不要在for循環(huán)體里聲明變量(建議一次var,多次賦值)

    2,數(shù)組長(zhǎng)度緩存,盡量少變量

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Javascript中for循環(huán)語(yǔ)句有哪些寫(xiě)法”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)建站,關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站chinadenli.net,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前題目:Javascript中for循環(huán)語(yǔ)句有哪些寫(xiě)法-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://chinadenli.net/article16/egpgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、搜索引擎優(yōu)化品牌網(wǎng)站制作、小程序開(kāi)發(fā)、虛擬主機(jī)、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)