日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JavaScript 各種遍歷方式詳解,有你不知道的黑科技

瀏覽:123日期:2023-11-19 13:14:46

為了方便例子講解,現有數組和json對象如下

var demoArr = [’Javascript’, ’Gulp’, ’CSS3’, ’Grunt’, ’jQuery’, ’angular’];var demoObj = { aaa: ’Javascript’, bbb: ’Gulp’, ccc: ’CSS3’, ddd: ’Grunt’, eee: ’jQuery’, fff: ’angular’};for

可以直接看示例,用得太多了,很簡單

(function() { for(var i=0, len=demoArr.length; i<len; i++) {if (i == 2) { // return; // 函數執行被終止 // break; // 循環被終止 continue; // 循環被跳過};console.log(’demo1Arr[’+ i +’]:’ + demo1Arr[i]); }})();

關于for循環,有一下幾點需要注意

for循環中的i在循環結束之后任然存在與作用域中,為了避免影響作用域中的其他變量,使用函數自執行的方式將其隔離起來()();

避免使用for(var i=0; i<demo1Arr.length; i++){} 的方式,這樣的數組長度每次都被計算,效率低于上面的方式。也可以將變量聲明放在for的前面來執行,提高閱讀性

var i = 0, len = demo1Arr.length;for(; i<len; i++) {};

跳出循環的方式有如下幾種

return 函數執行被終止

break 循環被終止

continue 循環被跳過

完整實例

for in

for(var item in arr|obj){} 可以用于遍歷數組和對象

遍歷數組時,item表示索引值, arr表示當前索引值對應的元素 arr[item]

遍歷對象時,item表示key值,arr表示key值對應的value值 obj[item]

(function() { for(var i in demoArr) {if (i == 2) { return; // 函數執行被終止 // break; // 循環被終止 // continue; // 循環被跳過};console.log(’demoArr[’+ i +’]:’ + demoArr[i]); } console.log(’-------------’);})();

關于for in,有以下幾點需要注意:

在for循環與for in循環中,i值都會在循環結束之后保留下來。因此使用函數自執行的方式避免。

使用return,break,continue跳出循環都與for循環一致,不過關于return需要注意,在函數體中,return表示函數執行終止,就算是循環外面的代碼,也不再繼續往下執行。而break僅僅只是終止循環,后面的代碼會繼續執行。

function res() { var demoArr = [’Javascript’, ’Gulp’, ’CSS3’, ’Grunt’, ’jQuery’, ’angular’]; for(var item in demoArr) {if (item == 2) { return;};console.log(item, demoArr[item]); } console.log(’desc’, ’function res’); //不會執行}forEach

demoArr.forEach(function(arg) {})

參數arg表示數組每一項的元素,實例如下

demoArr.forEach(function(e) { if (e == ’CSS3’) {return; // 循環被跳過// break; // 報錯// continue;// 報錯 }; console.log(e);})

具體有以下需要注意的地方

forEach無法遍歷對象

forEach無法在IE中使用,firefox和chrome實現了該方法

forEach無法使用break,continue跳出循環,使用return時,效果和在for循環中使用continue一致

do/while

函數具體的實現方式如下,不過有一點值得注意的是,當使用continue時,如果你將i++放在了后面,那么i++的值將一直不會改變,最后陷入死循環。因此使用do/while一定要小心謹慎一點。

不建議使用do/while的方式來遍歷數組

// 直接使用while(function() { var i = 0,len = demoArr.length; while(i < len) {if (i == 2) { // return; // 函數執行被終止 // break; // 循環被終止 // continue; // 循環將被跳過,因為后邊的代碼無法執行,i的值沒有改變,因此循環會一直卡在這里,慎用!!};console.log(’demoArr[’+ i +’]:’ + demoArr[i]);i ++; } console.log(’------------------------’);})();// do while(function() { var i = 0,len = demo3Arr.length; do {if (i == 2) { break; // 循環被終止};console.log(’demo2Arr[’+ i +’]:’ + demo3Arr[i]);i++; } while(i<len);})();$.each

$.each(demoArr|demoObj, function(e, ele))

可以用來遍歷數組和對象,其中e表示索引值或者key值,ele表示value值

$.each(demoArr, function(e, ele) { console.log(e, ele);})

輸出為

0 'Javascript'1 'Gulp'2 'CSS3'3 'Grunt'4 'jQuery'5 'angular'

這里有很多需要注意的地方

使用return 或者return true為跳過一次循環,繼續執行后面的循環

使用return false為終止循環的執行,但是并不終止函數執行

無法使用break與continue來跳過循環

循環中this值輸出類似如下

console.log(this);//String {0: 'C', 1: 'S', 2: 'S', 3: '3', length: 4, [[PrimitiveValue]]: 'CSS3'}console.log(this == ele);// true

關于上面的this值,遍歷一下

$.each(this, function(e, ele) { console.log(e, ele);})// 0 c// 1 s// 2 s// 4 3

為什么length 和 [[PrimitiveValue]]沒有遍歷出來?突然靈光一動,在《javascript高級編程》中找到了答案,大概意思就是javascript的內部屬性中,將對象數據屬性中的Enumerable設置為了false

// 查看length的內部屬性console.log(Object.getOwnPropertyDescriptor(this, ’length’));// Object {value: 4, writable: false, enumerable: false, configurable: false}

$.each 中的 $(this) 與this有所不同,不過遍歷結果卻是一樣,你可以在測試代碼中打印出來看看

$(selecter).each

專門用來遍歷DOMList

$(’.list li’).each(function(i, ele) { console.log(i, ele); // console.log(this == ele); // true $(this).html(i); if ($(this).attr(’data-item’) == ’do’) {$(this).html(’data-item: do’); };})

i: 序列值 ele: 只當前被遍歷的DOM元素

this 當前被遍歷的DOM元素,不能調用jQuery方法

$(this) == $(ele) 當前被遍歷元素的jquery對象,可以調用jquery的方法進行dom操作

使用for in 遍歷DOMList

因為domList并非數組,而是一個對象,只是因為其key值為0,1,2... 而感覺與數組類似,但是直接遍歷的結果如下

var domList = document.getElementsByClassName(’its’);for(var item in domList) { console.log(item, ’:’ + domList[item]);}// 0: <li></li>// 1: <li></li>// ...// length: 5// item: function item() {}// namedItem: function namedItem() {}

因此我們在使用for in 遍歷domList時,需要將domList轉換為數組

var res = [].slice.call(domList);for(var item in res) {}

類似這樣的對象還有函數的屬性arguments對象,當然字符串也是可以遍歷的,但是因為字符串其他屬性的enumerable被設置成了false,因此遍歷出來的結果跟數組是一樣的,也就不用擔心這個問題了.

小補充

如果你發現有些人寫函數這樣搞,不要驚慌,也不要覺得他高大上鳥不起

+function(ROOT, Struct, undefined) { ... }(window, function() { function Person() {}})

()(), !function() {}() +function() {}() 三種函數自執行的方式^_^

標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
午夜日韩福利| 日韩综合精品| 99成人在线视频| 国产成人77亚洲精品www| 国内自拍视频一区二区三区| 久久免费福利| 毛片在线网站| 999久久久国产精品| 欧美日韩国产综合网| 亚洲性色视频| 噜噜噜躁狠狠躁狠狠精品视频| 99视频精品| 91精品国产自产在线观看永久∴ | 国产乱码精品一区二区三区四区| 日韩精品dvd| 99成人在线视频| av亚洲一区二区三区| 激情91久久| 69堂精品视频在线播放| 精品国产不卡一区二区| 欧美成人综合| 日韩在线网址| av中文字幕在线观看第一页 | 亚洲精品在线二区| 麻豆国产精品一区二区三区| 中文在线а√天堂| 中文字幕一区二区精品区| 国产亚洲欧美日韩在线观看一区二区| 精品女同一区二区三区在线观看| 美女少妇全过程你懂的久久| 亚洲bt欧美bt精品777| 久久久91麻豆精品国产一区| 亚洲一区二区三区四区五区午夜 | 91视频一区| 亚洲永久字幕| 黄色aa久久| 日韩二区在线观看| 日韩视频一区| 麻豆精品蜜桃| 精品国产亚洲一区二区三区| 丝袜国产日韩另类美女| 91亚洲国产| 国产精品一卡| 日本欧美久久久久免费播放网| 国产99久久| 国产精品毛片久久| 国产亚洲一卡2卡3卡4卡新区| 蜜桃国内精品久久久久软件9| 久久久久97| 日韩av影院| 中文字幕日韩亚洲| 伊人成人网在线看| 91精品国产乱码久久久久久久| 麻豆91在线播放| 国产精品久久久一区二区| 男人的天堂亚洲一区| 国产综合婷婷| 日韩国产一区二区三区| 国产欧洲在线| 麻豆国产欧美一区二区三区 | 激情久久五月| 久久美女性网| 捆绑调教日本一区二区三区| 欧美日韩亚洲一区二区三区在线| 亚洲精选成人| 亚洲日本国产| 亚洲免费一区三区| 日日夜夜免费精品| 日韩精品一区二区三区免费视频| 黄色精品视频| 福利一区和二区| 乱一区二区av| 一本大道色婷婷在线| 久久影院午夜精品| 亚洲高清av| 亚洲人成网77777色在线播放| 色综合视频一区二区三区日韩 | 亚洲综合激情在线| 日本成人在线一区| 国产精品毛片视频| 国产精品亚洲二区| 老司机免费视频一区二区三区| 国产精品igao视频网网址不卡日韩 | 在线观看一区| 国产精品美女| 久久激情av| 五月天av在线| 亚洲精品裸体| 国产a久久精品一区二区三区| 一区二区小说| 国产精品久久久久久模特| 日韩一区二区在线免费| 蜜桃av一区二区三区电影| 成人午夜网址| 蜜臀av一区二区三区| 免费亚洲一区| 亚洲一区导航| 亚洲涩涩在线| 欧美日韩亚洲三区| 丝袜诱惑一区二区| 视频一区中文字幕国产| 超碰在线99| 日韩午夜视频在线| 好看的亚洲午夜视频在线| 国产劲爆久久| 日韩精品免费视频一区二区三区 | 欧美亚洲免费| 久久中文字幕av一区二区不卡| 九一国产精品| 日韩精品一区二区三区中文| 国产精品久久久久av电视剧| 久久中文精品| 亚洲香蕉久久| 日韩在线欧美| 久久97视频| 69堂免费精品视频在线播放| 亚洲免费影视| 99热国内精品| 少妇久久久久| 色欧美自拍视频| 欧美国产精品| 麻豆国产一区| 久久99久久人婷婷精品综合| 97成人在线| 视频精品一区二区| 99xxxx成人网| 欧美在线亚洲| 九色精品91| 免费久久99精品国产自在现线| 久久精品国产99久久| 91精品蜜臀一区二区三区在线| 久草免费在线视频| 久久久精品五月天| 久久裸体视频| av亚洲在线观看| 老司机精品久久| 一区二区三区四区在线观看国产日韩| 亚洲欧美日韩精品一区二区| 首页国产欧美日韩丝袜| 亚洲综合图色| 日本不卡一二三区黄网| 日精品一区二区三区| 国产精品亚洲片在线播放| 国产一区二区三区天码| 欧美+亚洲+精品+三区| 91超碰国产精品| 日本在线不卡视频| 国产精品网址| 日韩高清不卡| 日韩中出av| 精品国产乱码久久久| 久久蜜桃av| 日韩国产欧美一区二区三区| 国产成人精品免费视| 国产尤物精品| 久久国产精品色av免费看| 韩国女主播一区二区三区| 激情综合网站| 欧美日韩调教| 亚洲二区免费| 91伊人久久| 久久精品91| 国产精品777777在线播放| 国产综合亚洲精品一区二| 欧美一级网址| 亚洲激情av| 日韩欧美午夜| 国产日韩欧美| 国产视频一区欧美| 国内精品美女在线观看| 免费成人av在线播放| 国产精品yjizz视频网| 亚洲精品观看| 亚洲欧洲日本mm| 国产v日韩v欧美v| 日韩高清电影免费| 欧美美女一区| 日韩欧美视频专区| 久久精品国产999大香线蕉| 日本不卡一二三区黄网| 免费视频久久| 亚洲欧美一区在线| 欧美三级网址| 在线观看精品| 精品视频在线观看网站| 中文字幕中文字幕精品| 一区免费在线| 欧美日韩国产一区二区三区不卡| 国产aa精品| 日韩国产一区| 在线观看精品| 日韩欧美另类一区二区| 国产精品精品| 精品一区二区三区在线观看视频 | 欧美综合另类| 日韩伦理一区| 日韩欧美一区二区三区在线观看 | 黄色在线一区| 国产精品普通话对白| 综合干狼人综合首页|