国产99视频精品免视看7_国外成人在线播放_怡红院一区二区_日本亚洲欧美_亚洲国产成人私人影院tom_水蜜桃一区二区_国产在线精品一区二区不卡_国产综合久久_欧美性生活久久_日本大胆人体视频

千鋒教育-做有情懷、有良心、有品質的職業教育機構

當前位置:首頁  >  IT問答庫  >  Web基礎知識

4個Javascript 中的 for 循環-web前端基礎知識

發布:web前端基礎知識 2022-02-09 14:58

推薦答案

  4Javascript 中的 for 循環 ECMAScript5(簡稱 ES5)中,有三個循環。在 2015 6 月發布的 ECMAScript6(簡稱 ES6)中,新增了一種循環類型。他們是:

·   for

·   for in

·   for each

·   for of

今天,就讓我們一起來看看這4for 循環。

4個Javascript 中的 for 循環

 

1、簡單的for循環

我們來看看最常見的寫法:

const arr = [1, 2, 3];for(let i = 0; i < arr.length; i++) {

 console.log(arr[i]);}

當循環中數組的長度沒有變化時,我們應該將數組的長度存儲在一個變量中,這樣效率會更高。下面是改進的寫法:

const arr = [1, 2, 3];for(let i = 0, len = arr.length; i <len; i++) {

 console.log(arr[i]);}

2、for-in

2.1、 使用 for-in

通常,我們可以使用for-in來遍歷數組的內容,代碼如下:

const arr = [1, 2, 3];let index;for(index in arr) {

 console.log(“arr[“ + index + “] = “ + arr[index]);}

一般來說,操作的結果如下:

arr[0] = 1arr[1] = 2arr[2] = 3

但這樣做往往會產生問題。

2.2for-in的真相

for-in 循環遍歷對象的屬性,而不是數組的索引。所以for-in遍歷的對象不限于數組,也可以遍歷對象。示例如下:

 const person = {

 fname: “san”,

 lname: “zhang”,

 age: 99};let info;for(info in person) {

 console.log(“person[“ + info + “] = “ + person[info]);}

結果如下:

person[fname] = sanperson[lname] = zhangperson[age] = 99

需要注意的是for-in遍歷屬性的順序是不確定的,即輸出結果的順序與對象中屬性的順序無關,也與屬性的字母順序無關,也沒有任何其他順序。

2.3 、關于數組的真相

數組是Javascript中的一個對象,Array的索引是屬性名。事實上,Javascript 中的數組有點誤導。

Javascript 中的數組與大多數其他語言中的數組不同。首先,Javascript 中的數組在內存中不是連續的。

其次,Array 的索引不是指偏移量。其實Array的索引不是Number類型,而是String類型。之所以能正確使用 arr[0] 之類的寫法,是因為語言可以自動改變 Number 類型。0 轉換為 String 類型的“0”

因此,Javascript 中從來沒有 Array 索引,只有“0”“1”等屬性。

有趣的是,每個 Array 對象都有一個 length 屬性,這使得它的行為更像其他語言中的數組。

但是為什么遍歷Array對象的時候不輸出length屬性呢?那是因為for-in只能遍歷可枚舉屬性length是不可枚舉屬性,實際上Array對象還有很多其他不可枚舉屬性。

現在,讓我們回過頭來看看使用 for-in 循環數組的例子。我們修改前面遍歷數組的例子:

const arr = [1, 2, 3];arr.name = “Hello world”;let index;for(index in arr) {

 console.log(“arr[“ + index + “] = “+ arr[index]);}

操作的結果是:

arr[0] = 1arr[1] = 2arr[2] = 3arr[name] = Hello world

我們看到 for-in 遍歷我們新的“name”屬性,因為 for-in 遍歷對象的所有屬性,而不僅僅是索引

同時,需要注意的是,這里輸出的索引值,即“0”“1”“2”不是Number類型,而是String類型,因為它們是作為屬性輸出的,不是索引,這是否意味著我們只能輸出數組的內容,而不能向我們的 Array 對象添加新屬性?答案是否定的。

因為for-in不僅遍歷數組本身的屬性,還會遍歷數組原型鏈上的所有可枚舉屬性。讓我們看一個例子:

Array.prototype.fatherName = “Father”;const arr = [1, 2, 3];arr.name = “Hello world”;let index;for(index in arr) {

 console.log(“arr[“ + index + “] = “+ arr[index]);}

操作的結果是:

arr[0] = 1arr[1] = 2arr[2] = 3arr[name] = Hello worldarr[fatherName] = Father

至此,我們可以發現for-in并不適合遍歷Array中的元素,它更適合遍歷對象的屬性,這也是它創建的初衷。有一個例外,那就是稀疏數組,閱讀以下示例:

let key;const arr = [];arr[0] = “a”;arr[100] = “b”;arr[10000] = “c”;for(key in arr) {

 if(arr.hasOwnProperty(key) &&

 /?$|^[1–9]\d*$/.test(key) &&

 key <= 4294967294

 ) {

 console.log(arr[key]);

 }}

For-in 僅遍歷現有實體。上例中for-in遍歷了3次(分別遍歷屬性為“0”“100”“10000”的元素,普通for循環會遍歷10001次)。因此,只要處理得當,for-in 也可以在遍歷 Array 中的元素方面發揮巨大的作用。

為了避免重復工作,我們可以包裝上面的代碼:

 function arrayHasOwnIndex(array, prop) {

 return array.hasOwnProperty(prop) &&

 /?$|^[1–9]\d*$/.test(prop) &&

 prop <= 4294967294; // 2³²-2}

用法示例如下:

for (let key in arr) {

 if (arrayHasOwnIndex(arr, key)) {

 console.log(arr[key]);

 }}

2.4for-in性能

如上所述,每次迭代操作都會同時搜索實例或原型屬性。for-in 循環的每次迭代都會產生更多的開銷,所以它比其他循環類型慢,一般速度是其他循環類型的 1/7

因此,除非您明確需要迭代具有未知數量屬性的對象,否則您應該避免使用 for-in 循環。如果需要遍歷有限數量的已知屬性列表,使用其他循環會更快,例如以下示例:

const obj = {

 “prop1”: “value1”,

 “prop2”: “value2”};const props = [“prop1”, “prop2”];for(let i = 0; i <props.length; i++) {

 console.log(obj[props[i]]);}

在上面的代碼中,對象的屬性存儲在一個數組中。與for-in搜索每個屬性相比,代碼只關注給定的屬性,節省了循環的開銷和時間。

3、forEach

ES5 中,引入了一個新循環,即 forEach 循環。

const arr = [1, 2, 3];arr.forEach((data) => {

 console.log(data);});

操作結果:

123

forEach 方法對數組中包含有效值的每一項執行一次回調函數,那些已經被刪除(使用delete 方法等)或從未賦值的項將被跳過(不包括那些未定義的項) 或空值)。回調函數會依次傳入三個參數:

  • 數組中當前項的值;
  • 當前項在數組中的索引;
  • 數組對象本身;

需要注意的是,forEach 遍歷的范圍會在第一次調用回調之前確定。調用 forEach 后添加到數組的項目不會被回調訪問。

如果現有值發生變化,則傳遞給callback的值就是forEach遍歷它們時的值。不會遍歷已刪除的項目。

const arr = [];arr[0] = “a”;arr[3] = “b”;arr[10] = “c”;arr.name = “Hello world”;arr.forEach((data, index, array) => {

 console.log(data, index, array);});

操作結果:

a 0 [“a”, 3: “b”, 10: “c”, name: “Hello world”]b 3 [“a”, 3: “b”, 10: “c”, name: “Hello world”]c 10 [“a”, 3: “b”, 10: “c”, name: “Hello world”]

這里的索引是Number類型的,不會像for-in那樣遍歷原型鏈上的屬性。

因此,在使用forEach時,我們不需要特別聲明索引和要遍歷的元素,因為這些都是作為回調函數的參數。

另外,forEach 會遍歷數組中的所有元素,但是 ES5 定義了一些其他有用的方法,下面是一部分:

  • every:循環在第一次返回false后返回
  • some:循環在第一次返回 true 后返回
  • filter:返回一個元素滿足回調函數的新數組
  • map:在返回之前處理原始數組中的元素
  • reduce:依次處理數組中的元素,將上一次處理的結果作為下一次處理的輸入,最終得到最終結果。

forEach 性能

您可以看看jsPerf。在不同瀏覽器下測試的結果是forEach沒有for快。如果將測試代碼放在控制臺中,可能會得到不同的結果。主要原因是控制臺的執行環境與真實的代碼執行環境不同。

4、for-of

我們先來看一個例子:

const arr = [‘a’, ‘b’, ‘c’];for(let data of arr) {

 console.log(data);}

運行的結果是:

abc

為什么要引入for-of

要回答這個問題,我們先來看看 ES6 之前的 3 for 循環的缺陷:

forEach 不能中斷和返回;

for-in 的劣勢更加明顯。它不僅遍歷數組中的元素,還遍歷自定義屬性,甚至訪問原型鏈上的屬性。此外,遍歷數組元素的順序可以是隨機的。

所以,針對以上缺點,我們需要對原來的for循環進行改進。但是 ES6 不會破壞您已經編寫的 JS 代碼。

目前,數以千計的網站依賴于 for-in 循環,其中一些甚至將其用于數組遍歷。通過修復 for-in 循環來添加數組遍歷支持會使這一切變得更加混亂,因此標準委員會在 ES6 中添加了一個新的循環語法來解決當前的問題 for-of

那么 for-of 能做什么呢?

forEach相比,它可以正確響應breakcontinuereturn

for-of 循環不僅支持數組,還支持大多數類似數組的對象,例如 DOM 節點列表對象。

for-of 循環還支持字符串遍歷,它將字符串作為 Unicode 字符序列進行迭代。

for-of 還支持 Map Set(都是 ES6 中的新功能)對象遍歷。

總結一下,for-of 循環具有以下特點:

這是迭代數組元素的最簡潔直接的語法。

這種方法避免了 for-in 循環的所有陷阱。

forEach 不同,它正確響應 breakcontinue return 語句。

它不僅可以遍歷數組,還可以遍歷類數組對象和其他可迭代對象。

然而,應該注意的是,for-of 循環不支持普通對象,但是如果您想遍歷一個對象的屬性,您可以使用 for-in 循環(它就是這樣做的)。

最后,但并非最不重要的是,ES6 引入了另一種方法來迭代數組的值,那就是 Iterator。最后一個例子:

const arr = [‘a’, ‘b’, ‘c’];const iter = arr[Symbol.iterator]();iter.next() // { value: ‘a’, done: false }iter.next() // { value: ‘b’, done: false }iter.next() // { value: ‘c’, done: false }iter.next() // { value: undefined, done: true }

不過,這個內容超出了本文的范圍,Iterator 有很多要講的。

最新問答資訊

01 unity用什么編程語言?unity學習難度大嗎

學習 unity 語言
6020 人關注

02 python容易學嗎?學好python有什么好處?

學習 python 工作 培訓
5389 人關注

03 html是什么語言?html學習難嗎?

學習 html 語言 可以
5062 人關注

04 c語言難學嗎?c語言學好要多久?

語言 技術 學習
4733 人關注

06 學好平面設計要多久?報速成班靠譜嗎?

平面 設計 學習 時間
4238 人關注

相關問題

web前端自學好還是培訓好

關于“web前端自學好還是培訓好”這個問題說法眾說紛紜,有很多...

選擇Web培訓機構的注意事項有哪些

師資力量;老師是不是又豐富的實戰開發經驗,這點是非常重要的。...

Web前端主要做什么

前端開發是創建Web頁面或app等前端界面呈現給用戶的過程,通過HT...

web前端培訓分享:學Web前端的好處有哪些

web前端近幾年在IT互聯網行業比較火熱,很多人都開始參加web前端...

web前端培訓分享:Web前端需要學什么

Web前端需要學什么?好不好學?這是很多想要進入到web前端行業的學...

零基礎參加web前端培訓都學什么

零基礎參加web前端培訓都學什么?基礎階段學習HTML常用標簽與表單...

測一測
你知道多少IT梗

亚洲精品国产无天堂网2021| www.欧美三级电影.com| 久久精品人妻一区二区三区| 日韩成人av在线资源| 日本电影亚洲天堂| 麻豆国产视频| 99天天综合性| 国产理论在线播放| а√天堂8资源在线| 亚洲天堂av网| av网站在线观看免费| 日本伊人色综合网| 女人床在线观看| av中文字幕一区二区三区| 欧美一区二区三区免费大片| 青青草av在线播放| 欧美大片一区| 日本不卡一区二区三区视频| 在线观看免费国产小视频| 91久久线看在观草草青青| 婷婷激情四射网| 日韩一区二区中文| 国产综合欧美在线看| 亚洲永久精品免费| 欧美主播一区二区三区美女| 国产这里有精品| 91精品久久久久久久久久不卡| 狠狠色噜噜狠狠狠狠色吗综合| 日本特黄a级高清免费大片| 日韩欧美aaa| 欧美日韩在线视频免费播放| 911久久香蕉国产线看观看| 久久久精品动漫| 头脑特工队2在线播放| 7777精品伊人久久久大香线蕉最新版| 免费在线不卡视频| 日韩网站在线| 老司机午夜免费福利视频| 欧美黑人激情| 亚洲深夜福利在线| 天天操天天操天天操| 成人美女视频在线观看| 中文字幕12页| 婷婷综合国产| 91免费的视频在线播放| 免费国产视频| 欧美夫妻性生活| 最近中文在线观看| 另类的小说在线视频另类成人小视频在线| 国产一区二区网| 欧美大片免费| 91av在线播放| 日本大片在线看黄a∨免费| 一区二区理论电影在线观看| 国产探花在线视频| 最新国产精品| 中文字幕第一页亚洲| av在线播放观看| 日日噜噜噜夜夜爽亚洲精品| 欧美猛交xxxxx| 亚洲精品免费在线观看| 制服丨自拍丨欧美丨动漫丨| 围产精品久久久久久久| 一区二区三区四区| 毛片大全在线观看| 欧美黑人一级爽快片淫片高清| 国产精品18久久久久网站| 亚洲精品成人a在线观看| 午夜爱爱毛片xxxx视频免费看| 黄色成人在线网址| 国产日韩av网站| 久久精品女人天堂av免费观看 | 免费观看的黄色网址| 香蕉乱码成人久久天堂爱免费| 天天干中文字幕| 性欧美videos另类喷潮| 国产日产欧美视频| 国产高清精品二区| 91视频99| 高清毛片在线看| 在线免费看av不卡| 国产三级做爰在线观看| 亚洲成av人片一区二区梦乃| 亚洲精品77777| 免费在线观看日韩欧美| www.国产福利| 久久不见久久见国语| 日韩久久久久久久久久久久久| 国产视频中文字幕在线观看| 欧美第一淫aaasss性| 狠狠色噜噜狠狠狠狠黑人| 在线免费观看日本欧美| 国产乱人乱偷精品视频a人人澡| 99国产欧美久久久精品| 男人天堂av电影| 一区免费视频| www.日日操| 国产毛片久久久| 日本在线一区| 人在线成免费视频| 国产精品久久久一区| 国产短剧电视剧免费观看| av超碰在线| 日韩毛片免费视频一级特黄| 欧美国产乱视频| 草莓视频性福宝| 制服丝袜亚洲精品中文字幕| 日本精品久久久久久| 亚洲日本丝袜连裤袜办公室| 国产精品a成v人在线播放| 蜜桃久久精品一区二区| 黑人巨大猛交丰满少妇| 久久国产成人精品| 青青草国产免费| 日韩三级av高清片| 色噜噜狠狠色综合网| 午夜不卡影院| 亚洲字幕在线观看| 黄色在线播放网站| 欧美综合在线观看| 亚洲啪啪aⅴ一区二区三区9色| 在线精品国产成人综合| 啦啦啦高清在线观看www| 欧美一级精品在线| 蜜桃色永久入口| 日本高清视频一区二区| 男人天堂综合网| 一区二区三区免费网站| 瑟瑟视频在线免费观看| 亚洲国产精品激情在线观看| 97超碰人人干| wwww国产精品欧美| 久久亚洲成人av| 国产91精品精华液一区二区三区| 九九热久久免费视频| 免费美女久久99| 亚洲熟妇无码av| 日日夜夜免费精品视频| 国产精品无码一区二区三区免费| 国产欧美丝祙| 久久精品aⅴ无码中文字字幕重口| 福利一区和二区| 日韩av男人的天堂| 蜜桃av免费观看| 欧美全黄视频| 亚欧美在线观看| 久久高清精品| 色多多视频在线播放| 欧美美女一区| 久热免费在线观看| 日韩国产专区| 韩国一区二区av| 日韩在线观看| 五月婷婷激情久久| 亚洲91久久| 在线观看国产福利| 欧美 亚欧 日韩视频在线| 国产免费中文字幕| 亚洲国产高清视频| 9.1在线观看免费| 丝袜美腿一区二区三区| 亚洲av片不卡无码久久| 蜜桃视频在线观看一区| 波多野结衣家庭教师在线观看 | 真实国产乱子伦对白视频| av日韩精品| 搞av.com| 欧美性感美女一区二区| 午夜视频你懂的| 欧美a级片网站| 色诱av手机版| 中文字幕在线免费专区| a一区二区三区亚洲| 国产一区美女在线| 欧美一区二区三区四区高清| 成人精品福利视频| 国产视频一区二区三| 国产精品三级视频| 中文字幕永久免费视频| 亚洲综合久久久久| 天天干天天舔天天射| 欧美三级中文字| 91香蕉网站| 亚洲美女av电影| 日本欧美亚洲| 2019中文字幕免费视频| 黄色成人影院| av一区二区三区免费| 久久久成人av毛片免费观看| 在线视频不卡国产| 国内精品国产成人国产三级粉色| 青青在线视频观看| 国产综合视频| 在线观看日本中文字幕| 成人中文字幕在线| 亚洲高清在线看| 午夜精品成人在线视频| 最近2018年中文字幕在线| 日韩精品最新网址| 久久久久久91亚洲精品中文字幕| 欧美精品偷拍| 私密视频在线观看| 国产精品一卡二卡在线观看| 99精品视频99| 夜夜嗨av一区二区三区四季av| 五十路在线视频| 日韩一区二区免费在线观看| 影音av在线| 久久久久久久久亚洲| 国产日产一区二区| 久久影院理伦片| 成人爽a毛片| 亚洲天堂2018av| 青娱乐精品视频| 国产精品第一页在线观看| 亚洲色图一区二区三区| 嫩模一区二区三区| 亚洲激情 国产| 922tv免费观看在线| 国产精品久久久av久久久| 欧美色999| 日韩av在线播放不卡| 国产精品激情| 国产小视频你懂的| 1000精品久久久久久久久| 亚洲免费视频在线| 亚洲精品mp4| 亚洲精品无码专区在线播放| 成人性生交xxxxx网站| 四虎影视成人精品国库在线观看| 自慰无码一区二区三区| 99人久久精品视频最新地址| 精品无码一区二区三区蜜臀| 一区二区中文字幕在线| 九九久久久2| 国产亚洲美女久久| 高清av在线| 韩国一区二区三区美女美女秀| 动漫av一区| 岛国大片在线免费观看| 成人精品视频一区二区三区尤物| 国产精品一级视频| 精品国产区一区| 一级片在线视频| 成人av中文| 午夜精品影视国产一区在线麻豆| 国产精品日日摸夜夜爽| 99re这里只有精品视频首页| 亚洲av无码一区二区三区性色| 精品国产乱码久久久久久闺蜜| 在线观看午夜看亚太视频| 国产精品二区三区| 五月综合久久| 亚洲欧美色图视频| 国产精品天干天干在线综合| 欧美色图片区| 久久99精品久久久久久噜噜| 黄视频网站在线观看| 国产av国片精品| 日本亚洲视频在线| 制服丝袜在线一区| 精品免费视频.| 韩国免费在线视频| 日本一区二区三区视频在线观看 | 中文字幕在线国产| 91丨porny丨在线| 亚洲人成电影在在线观看网色 | 爱草tv视频在线观看992| 欧美久久在线观看| 老司机精品导航| 亚洲精品一区二三区| 日韩无一区二区| 日本大臀精品| 色吧亚洲视频| 亚洲欧洲另类| 久久久久久久久久影院| 欧美日韩aaa| 深夜福利视频在线免费观看| 久久天堂国产精品| 欧美精品啪啪| 国产小视频在线免费观看| 7878成人国产在线观看| 男男激情在线| av动漫免费观看| 亚洲影视综合| 中文字幕一区二区在线视频| 亚洲高清免费观看高清完整版| 日本不卡在线| 国产aaa免费视频| 久久99国产精品久久99果冻传媒| 国产裸体永久免费无遮挡| 亚洲男女性事视频| 91在线三级| 黄色三级视频片| av一区二区不卡| 欧美另类videosbest视频| 欧美精品18videos性欧| 综合欧美精品| 久草免费资源站| 亚洲精品视频免费观看| 五月婷婷开心综合| 国产精华一区| 欧美日韩蜜桃| 波多野结衣视频在线观看| 亚洲国产精品免费| 日本天码aⅴ片在线电影网站| www.亚洲天堂网| av在线不卡观看免费观看| 精品中文字幕不卡在线视频| 国产成人精品一区二区在线| 欧美重口另类| 97在线观看免费高| 欧美日韩一区二区在线视频| 成人免费在线观看| 国产人妻777人伦精品hd| 国产成人精品网址| 韩国18福利视频免费观看| 国产精品久久综合av爱欲tv| 深爱激情综合| 日韩xxx高潮hd| 亚洲国产日韩欧美在线99| 国产蜜臀在线| 亚洲精品中文字幕乱码无线| 国产精品成人一区二区艾草| hs网站在线观看| 精品无人区一区二区三区竹菊| 99在线精品免费视频九九视| 国产精品久久影视| 欧美成人精品不卡视频在线观看| 国产精品久一| 日本裸体美女视频| 欧美日韩精品一区二区天天拍小说| 午夜在线小视频| 无码精品国产一区二区三区免费| 2019国产精品| xfplay资源站色先锋在线观看| 精品国产乱码久久久久久郑州公司| 亚洲神马久久| 六月婷婷中文字幕| 欧洲日本亚洲国产区| 欧美人与物videos另类xxxxx| 国产a免费视频| 亚洲欧洲日本mm| 一级性生活视频| 欧美一站二站| 国产成人精品777777| 亚洲色图综合网| 亚洲精品tv| 国产亚洲精品久久久久久豆腐| 91精品国产综合久久精品性色| 天堂av中文在线| 一个人看的视频www| 亚洲国产综合色| 日本大臀精品| 人妻无码视频一区二区三区| 国产精品美女久久久久久久久久久| caoporen人人| 99热这里只有精品7| 豆国产96在线|亚洲| 三级福利视频| 免费亚洲精品视频| 激情五月婷婷综合网| 国产精品亚洲电影久久成人影院| 99re在线| 丝袜亚洲精品中文字幕一区| 亚洲国产精品久久卡一| 99re视频| 日韩av一级片| 国产视频你懂的| 九色91在线视频| 久久99精品久久只有精品| 多人欧美交性姿势| 久久婷婷开心| 国产麻豆一精品一av一免费| 4438欧美| 视频一区二区三区在线观看| 国产盗摄一区二区三区| 黄色片子免费| 亚洲人成影视在线观看| 不卡电影一区二区三区| 成人免费淫片免费观看| 樱空桃在线播放| 国产香蕉久久精品综合网| 丁香花高清电影在线观看完整版| 国产老熟妇精品观看| 自拍av一区二区三区| 国产精品久久久久久久龚玥菲 | 欧美另类视频在线观看| 亚洲精品综合久久中文字幕| 亚洲日本va午夜在线电影| 五月天综合激情| 欧美精品在线观看| 999国产精品999久久久久久| 亚洲高清视频在线播放| 91精品国产综合久久香蕉的用户体验 | 欧美裸体网站| www.亚洲色图| 三上悠亚在线观看二区| 成人观看免费完整观看| 一区二区三区在线观看网站|