Um die Beispielerklärung zu erleichtern, lauten die vorhandenen Arrays und JSON-Objekte wie folgt
var demoArr = ['Javascript', 'Gulp', 'CSS3', 'Grunt', 'jQuery', 'angular']; var demoObj = { aaa: 'Javascript', bbb: 'Gulp', ccc: 'CSS3', ddd: 'Grunt', eee: 'jQuery', fff: 'angular' };
Sie können sich das Beispiel direkt ansehen, es wird verwendet zu viel, es ist sehr einfach
(function() { for(var i=0, len=demoArr.length; i<len; i++) { if (i == 2) { // return; // 函数执行被终止 // break; // 循环被终止 continue; // 循环被跳过 }; console.log('demo1Arr['+ i +']:' + demo1Arr[i]); } })();
Bezüglich der for-Schleife gibt es ein paar Dinge zu beachten:
i in der for-Schleife existiert immer noch in der Bereich nach Ende der Schleife. Um eine Beeinträchtigung des Bereichs für andere Variablen in zu vermeiden, verwenden Sie die Selbstausführung der Funktion, um sie zu isolieren ()();
Vermeiden Sie die Verwendung von for(var i= 0; i
var i = 0, len = demo1Arr.length; for(; i<len; i++) {};
Es gibt mehrere Möglichkeiten, aus der Schleife auszubrechen
Ausführung der Return-Funktion wird beendet
Break-Schleife wird beendet
Continue-Schleife wird übersprungen
Vollständige Instanz
for(var item in arr|obj){} kann zum Durchlaufen von Arrays und Objekten verwendet werden
Beim Durchlaufen des Arrays stellt item den Indexwert dar, arr stellt das Element dar, das dem aktuellen Indexwert arr[item] entspricht
Beim Durchlaufen des Objekts , item stellt den Schlüsselwert dar, arr stellt den Wert obj[item] dar, der dem Schlüsselwert entspricht >In for-Schleifen und for in-Schleifen wird der i-Wert nach dem Ende der Schleife beibehalten. Um dies zu vermeiden, nutzen Sie daher selbstausführende Funktionen.
(function() { for(var i in demoArr) { if (i == 2) { return; // 函数执行被终止 // break; // 循环被终止 // continue; // 循环被跳过 }; console.log('demoArr['+ i +']:' + demoArr[i]); } console.log('-------------'); })();
forEach
Parameter arg stellt das Element jedes Elements im Array dar , Beispiel Wie folgt
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 kann keine Objekte durchqueren
demoArr.forEach(function(e) { if (e == 'CSS3') { return; // 循环被跳过 // break; // 报错 // continue;// 报错 }; console.log(e); })
Es wird nicht empfohlen, do/while zum Durchlaufen des Arrays zu verwenden
$.each(demoArr|demoObj , Funktion (e, ele))
Kann zum Durchlaufen von Arrays und Objekten verwendet werden, wobei e den Indexwert oder Schlüsselwert darstellt und ele den Wertwert darstelltDie Ausgabe ist
// 直接使用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(demoArr, function(e, ele) { console.log(e, ele); })
0 "Javascript" 1 "Gulp" 2 "CSS3" 3 "Grunt" 4 "jQuery" 5 "angular"
console.log(this); //String {0: "C", 1: "S", 2: "S", 3: "3", length: 4, [[PrimitiveValue]]: "CSS3"} console.log(this == ele); // true
$.each(this, function(e, ele) { console.log(e, ele); }) // 0 c // 1 s // 2 s // 4 3
$(selecter).each< zu sehen 🎜>Speziell zum Durchlaufen von DOMList verwendet
// 查看length的内部属性 console.log(Object.getOwnPropertyDescriptor(this, 'length')); // Object {value: 4, writable: false, enumerable: false, configurable: false}
Dies wird derzeit durchlaufen. Das durchlaufene DOM-Element kann die jQuery-Methode nicht aufrufen.i: Sequenzwert ele: nur das DOM-Element, das gerade durchlaufen wird
$('.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'); }; })
Weil domList kein Array, sondern ein Objekt ist, nur weil seine Schlüsselwerte 0, 1 sind, 2... und es fühlt sich ähnlich an wie ein Array. Aber das Ergebnis der direkten Durchquerung ist wie folgt:
Kleine Ergänzung
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() {}
+function(ROOT, Struct, undefined) { ... }(window, function() { function Person() {} })
()(), !function() {}() +function() {}() 三种函数自执行的方式^_^
以上就是JavaScript 各种遍历方式详解,有你不知道的黑科技的内容,更多相关内容请关注PHP中文网(www.php.cn)!