真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaScript中for循環(huán)怎么用-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)JavaScript中for循環(huán)怎么用的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

在興化等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需規(guī)劃網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷,成都外貿(mào)網(wǎng)站制作,興化網(wǎng)站建設(shè)費(fèi)用合理。

前言

對(duì)于for循環(huán),相信大家再常用不過了。但是這回說下for循環(huán)是因?yàn)榭创a時(shí)我居然沒有看明白一個(gè)for循環(huán)的意思,真是不應(yīng)該啊。

這個(gè)for循環(huán)是這么寫的:

for (var i = 0, rule; rule = rules[i++];) {
 //do something
}

這個(gè)寫法是什么意思呢?后面再說,現(xiàn)賣個(gè)關(guān)子,這個(gè)寫法我感覺還是挺好的。

for循環(huán)寫法對(duì)效率的影響

說上面那段代碼之前,先說一下for循環(huán)的效率問題。在接觸js時(shí)關(guān)于for循環(huán)的寫法和對(duì)效率影響的文章挺不少的。但總的來說對(duì)于for循環(huán)的寫法有這么兩種:

  1. 不寫聲明變量的寫法:for(var i = 0;i

  2. 寫聲明變量的寫法:for(var i = 0,len = arr.length;i < len;i++){}

除了for循環(huán)還有forEach(),也有文章說forEach()效率最高,推薦用forEach()寫法,那么到底哪個(gè)效率高呢?做個(gè)測(cè)試來看看吧。

測(cè)試方案

總的測(cè)試方案如下:

  1. 做一個(gè)容納4千萬的測(cè)試數(shù)組變量。

  2. 分別用兩種寫法的for循環(huán)和foreach對(duì)這個(gè)測(cè)試變量進(jìn)行遍歷。

  3. 在同一臺(tái)穩(wěn)定機(jī)器上,進(jìn)行10次測(cè)試,最后取平均值。

  4. 測(cè)試環(huán)境:CPU:Inter(R) Core i5-3210M,RAM:12GM,system:win10(x64)

測(cè)試流程

制作測(cè)試變量

先用while循環(huán)做個(gè)測(cè)試變量出來,這個(gè)很簡(jiǎn)單,具體如下:

var testArrs = [],
 i = 0;
while(i<40000000){
 testArrs.push(i);
 i++;
}

編寫相應(yīng)測(cè)試函數(shù)

測(cè)量和執(zhí)行時(shí)間的代碼,我用的是console.time()console.timeEnd()來進(jìn)行測(cè)試。

針對(duì)這個(gè)三個(gè)for循環(huán),先做出三個(gè)函數(shù)出來,他們分別是

foreach循環(huán)測(cè)試:

function testForeach(testArrs){
 console.time('foreach');
 var newArrs = [];
 testArrs.forEach(function(i){
 newArrs.push(i);
 });
 console.timeEnd('foreach');
}

沒有聲明變量的for循環(huán):

function testNoDeclare(testArrs){
 console.time('no declare');
 var newArrs = [];
 for(var i = 0;i

有變量聲明的寫法

function testUseDeclare(testArrs){
 console.time('use declare');
 var newArrs = [];
 for(var i = 0,len = testArrs.length;i

執(zhí)行測(cè)試函數(shù)

執(zhí)行測(cè)試函數(shù)這里很簡(jiǎn)單啦,就是調(diào)用函數(shù)就可以了

testForeach(testArrs);
testNoDeclare(testArrs);
testUseDeclare(testArrs);

測(cè)試結(jié)果

經(jīng)過10次測(cè)試,得到了以下結(jié)果

foreach不寫聲明寫聲明
2372.891ms672.530ms743.974ms
2431.821ms710.275ms805.676ms
2422.448ms729.287ms741.014ms
2330.894ms730.200ms755.390ms
2423.186ms703.255ms769.674ms
2379.167ms689.811ms741.040ms
2372.944ms712.103ms710.524ms
2316.005ms726.518ms726.522ms
2535.289ms733.826ms747.427ms
2560.925ms793.680ms817.098ms
平均值平均值平均值
2414.56ms720.15ms755.83ms

不知道結(jié)果有沒有讓你出乎意料呢?沒想到最平常的寫法效率最高,為什么?我也沒想明白,誰(shuí)知道就告訴我吧,但我估計(jì)寫聲明的寫法是沒有意義的。因?yàn)?code>len = arr.length這個(gè)arr.length可能已經(jīng)緩存起來了,所以我們?cè)诼暶鱾€(gè)len變量來存儲(chǔ)是沒有意義的。

最后附上全部測(cè)試代碼,復(fù)制到自己的電腦上直接就可以測(cè)試了,要是有不合理的地方請(qǐng)告訴我吧

var testArrs = [],
 i = 0;
while(i<40000000){
 testArrs.push(i);
 i++;
}
function testForeach(testArrs){
 console.time('foreach');
 var newArrs = [];
 testArrs.forEach(function(i){
 newArrs.push(i);
 });
 console.timeEnd('foreach');
}
function testNoDeclare(testArrs){
 console.time('no declare');
 var newArrs = [];
 for(var i = 0;i

for循環(huán)的特殊寫法

下面說下文章剛開始說的那個(gè)我沒看懂的代碼,說之前先溫習(xí)下再熟悉不過的for循環(huán)語(yǔ)法。for循環(huán)的基本語(yǔ)法是:

for (語(yǔ)句 1; 語(yǔ)句 2; 語(yǔ)句 3)
{
被執(zhí)行的代碼塊
}
  1. 語(yǔ)句1:在循環(huán)(代碼塊)開始前執(zhí)行

  2. 語(yǔ)句2:定義運(yùn)行循環(huán)(代碼塊)的條件

  3. 語(yǔ)句3:在循環(huán)(代碼塊)已被執(zhí)行之后執(zhí)行

如果我們用for循環(huán)要輸出1到10,我們可以這么寫:

for(var i=0;i<10;i++){
console.log(i);
}

但是!根據(jù)上面的語(yǔ)法說明,我們也可以寫成這樣

for(var i=10;i--;){
console.log(i);
}

剛開始看的時(shí)候我也很疑惑,怎么能這么寫?語(yǔ)句2放的是循環(huán)條件,i–是什么判斷條件。其實(shí)不然,在語(yǔ)句2中,如果返回true循環(huán)會(huì)繼續(xù)執(zhí)行。在js中0,null,undefined,false,'',””作為條件判斷時(shí),其結(jié)果為false,也就說當(dāng)i–到0的時(shí)候就是false,循環(huán)就終止了。

再回到文章開頭的代碼

for (var i = 0, rule; rule = rules[i++];) {
 //do something
}

這個(gè)rule = rules[i++]就是判斷條件,當(dāng)成為undefined時(shí)就會(huì)終止循環(huán)啦。所以這段代碼換成普通寫法就是這樣的:

for(var i = 0;i < rules.length;i++){
 var rule = rules[i]
}

其實(shí)就是把判斷和賦值放到一起了,一邊循環(huán)一邊賦值。是不是挺簡(jiǎn)單?

感謝各位的閱讀!關(guān)于“JavaScript中for循環(huán)怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

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


文章題目:JavaScript中for循環(huán)怎么用-創(chuàng)新互聯(lián)
鏈接地址:http://weahome.cn/article/jdiss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部