国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

Javascript中八種遍歷方法的執(zhí)行速度深度對(duì)比

2024-05-06 15:18:04
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

遍歷數(shù)組或?qū)ο笫且幻绦騿T的基本素養(yǎng)之一. 然而遍歷卻不是一件簡(jiǎn)單的事, 優(yōu)秀的程序員知道怎么去選擇合適的遍歷方法, 優(yōu)化遍歷效率. 本篇將帶你走進(jìn)JavaScript遍歷的世界, 享受分析JS循環(huán)的快感. 本篇所有代碼都可以直接運(yùn)行, 希望您通讀本篇后, 不止是瀏覽, 最好是親手去實(shí)踐下.

概述

js有如下兩種數(shù)據(jù)需要經(jīng)常遍歷

數(shù)組(Array) 對(duì)象(Object)

同時(shí)又提供了如下8種方法方便我們遍歷元素

for while(或do~while) forEach for in $.each $(selecter).each map every

最終我們將分析遍歷效率選出最佳遍歷選手.

本文將針對(duì)如下兩種數(shù)據(jù)進(jìn)行詳細(xì)的分析和舉栗. 下面舉栗中如果不加特殊說(shuō)明將會(huì)用到如下數(shù)據(jù).

var array = ["囚徒","過(guò)客","領(lǐng)袖"];//職場(chǎng)3種人var o = {0:"linda",1:"style",2:"nick",length:3};

for

語(yǔ)法: for(初始化; 循環(huán)執(zhí)行條件; 每遍歷一個(gè)元素后做的事情;){}

(function(){//循環(huán)置于閉包之內(nèi) for(var i=0,length=array.length;i<length;i++){//緩存數(shù)組長(zhǎng)度 console.log(array[i]);//內(nèi)部方法若有可能相互影響,也要置于閉包之內(nèi) }})();

for循環(huán)只能遍歷數(shù)組, 不能遍歷對(duì)象. 寫(xiě)for循環(huán)時(shí)有兩點(diǎn)需要注意.

其一, 為了避免遍歷時(shí)執(zhí)行多遍計(jì)算數(shù)組長(zhǎng)度的操作, 影響效率, 建議在循環(huán)開(kāi)始以變量的形式緩存下數(shù)組長(zhǎng)度, 若在循環(huán)內(nèi)部有可能改變數(shù)組長(zhǎng)度, 請(qǐng)務(wù)必慎重處理, 避免數(shù)組越界. JavaScript中并沒(méi)有類(lèi)似java的塊級(jí)作用域, for循環(huán)內(nèi)部定義的變量會(huì)直接暴露在外(如 i,循環(huán)退出后,i變量將等于數(shù)組長(zhǎng)度, 后續(xù)代碼將能訪問(wèn)到 i 變量的值), 因此建議將for循環(huán)置于閉包內(nèi). 特別要注意的是: 如果在循環(huán)內(nèi)部, 前一個(gè)元素的遍歷有可能影響到后一個(gè)元素的遍歷, 那么for循環(huán)內(nèi)部方法也需要置于閉包之內(nèi).

do/while

語(yǔ)法: do{...}while(true);

 do while(function() { var i = 0, len = array.length; do { if (i == 2) { break; // 循環(huán)被終止, 此處如果是continue就會(huì)造成循環(huán)無(wú)法退出 }; console.log('array['+ i +']:' + array[i]); i++;//此句建議放置循環(huán)while頭部 } while(i<len);})();

do/while的語(yǔ)法簡(jiǎn)化了循環(huán)的實(shí)現(xiàn), 只保留對(duì)循環(huán)條件的判斷, 所以我們要在循環(huán)內(nèi)部構(gòu)造出循環(huán)退出的條件, 否則有可能造成死循環(huán). 特別要注意的是: 使用 continue 跳出本次遍歷時(shí), 要保證循環(huán)能夠自動(dòng)進(jìn)入到下一次遍歷, 因此保證循環(huán)走到下一次遍歷的語(yǔ)句需要放到 continue 前面執(zhí)行, 建議置于循環(huán)頭部.(如上, i++ 語(yǔ)句最好放置循環(huán)頭部)

do/while 循環(huán)與for循環(huán)大體差不多,只支持?jǐn)?shù)組遍歷, 多用于對(duì)循環(huán)退出條件不是很明確的場(chǎng)景. 一般來(lái)說(shuō)不建議使用這種方式遍歷數(shù)組.

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 定边县| 永顺县| 九江市| 珲春市| 新津县| 绥中县| 聂荣县| 合川市| 禹州市| 承德市| 合江县| 仪陇县| 右玉县| 西林县| 桂林市| 安顺市| 大田县| 宜宾县| 舟山市| 宝应县| 赞皇县| 英德市| 马鞍山市| 南宁市| 顺昌县| 常州市| 中宁县| 沾化县| 来凤县| 莆田市| 泸溪县| 秦皇岛市| 湛江市| 镇原县| 慈溪市| 临猗县| 安新县| 常山县| 房产| 军事| 杭锦旗|