javascript遍歴方式の詳細
6329 ワード
例の説明を容易にするために,既存の配列とjsonオブジェクトは以下の通りである.
for
例を直接見ることができて、使いすぎて、簡単です.
forループについては、以下の点に注意してください. forサイクル中のiは、サイクル終了後に任意に作用ドメインに存在し、作用ドメイン中の他の変数に影響を及ぼすことを避けるために、関数自己実行方式を用いてそれを分離する() forの使用を避ける(var i=0;i
ループから飛び出す方法は、次のような がある.
return関数実行終了breakループ終了continueループ完全インスタンススキップ
for in
for(var item in arr|obj){}配列とオブジェクトの遍歴に使用できます配列を巡る場合、itemはインデックス値を表し、arrは現在のインデックス値に対応する要素arr[item] を表す.オブジェクトを巡回する場合、itemはkey値、arrはkey値に対応するvalue値obj[item] を表す.
for inについては、以下の点に注意してください. forループとfor inループでは、i値はいずれもループ終了後に保持される.したがって、関数の自己実行を使用することは避けられます. はreturn,break,continueジャンプループを用いてもforループと一致するが,returnについては関数体ではreturnが関数実行終了を表し,ループ外のコードであっても下へ実行しないことに注意する必要がある.breakはループを終了するだけで、後のコードは実行されます.
forEach
demoArr.forEach(function(arg){})パラメータargは配列の各項目の要素を表し、例は以下の通りである.
具体的には以下の注意点があります
forEachはオブジェクトを遍歴できませんforEachはIEで使用できません.firefoxとchromeはこの方法を実現しましたforEachはbreakを使用できません.continueはループから飛び出します.returnを使用すると、効果はforループでcontinueを使用することと一致しますdo/while
関数の具体的な実装方法は以下の通りですが、continueを使用する場合、i++を後ろに置くと、i++の値はずっと変わらず、最後にデッドサイクルに陥ることに注意してください.だからdo/whileを使うには慎重にしなければなりません.
do/whileを使用して配列を巡る//直接whileを使用することは推奨されません
$.each
$.each(demoArr|demoObj,function(e,ele))は、eがインデックス値またはkey値を表し、eleがvalue値を表す配列およびオブジェクトを巡回するために使用できます.
出力は
0「Javascript」1「Gulp」2「CSS 3」3「Grunt」4「jQuery」5「angular」ここには注意すべき点がたくさんあります returnまたはreturn trueを使用して、1回のループをスキップするために、後続のループ を実行し続ける. return falseを使用してループの実行を終了するが、関数実行 を終了することはない. breakとcontinueを使用してループ をスキップすることはできません.サイクルにおけるthis値出力は、以下のように である.
上のthis値について、遍歴してみます
なぜlengthと[[primitiveValue]]は遍歴しなかったのですか?突然、「javascript高度プログラミング」で答えが見つかりました.javascriptの内部属性で、オブジェクトデータ属性のEnumerableをfalseに設定するという意味です.
$.eachの$(this)はthisとは違いますが、遍歴結果は同じで、テストコードに印刷して$(selecter)を見ることができます.each
DOMListの遍歴に特化 i:シーケンス値ele:現在巡回中のDOM要素 のみ this現在遍歴されているDOM要素は、jQueryメソッド を呼び出すことができません.$(this)=$(ele)現在要素を巡るjqueryオブジェクトは、dom操作 のためにjqueryメソッドを呼び出すことができる.
for inを使用してDOMListを巡回する
domListは配列ではなくオブジェクトなので、key値が0,1,2...配列と似ているような感じがしますが、直接遍歴した結果は次のようになります.
//1:
//...
//length: 5
//item: function item() {}
//namedItem: function namedItem() {}
そこでforinを用いてdomListを巡回する場合,domListを配列に変換する必要がある.
このようなオブジェクトには関数の属性argumentsオブジェクトもあり、もちろん文字列も遍歴可能であるが、文字列の他の属性のenumerableがfalseに設定されているため、遍歴の結果は配列と同じであり、この問題を心配する必要はない.マイナー補完
もしあなたが関数を書く人がいることに気づいたら、慌てないで、彼が背が高いとは思わないでください.
()(), !function(){}()+function(){}()の3つの関数が自己実行される方法.
以上が本文のすべての内容で、みんなの学習に役立つことを望みます.
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
forループについては、以下の点に注意してください.
var i = 0, len = demo1Arr.length;
for(; i
return関数実行終了breakループ終了continueループ完全インスタンススキップ
for in
for(var item in arr|obj){}配列とオブジェクトの遍歴に使用できます
(function() {
for(var i in demoArr) {
if (i == 2) {
return; //
// break; //
// continue; //
};
console.log('demoArr['+ i +']:' + demoArr[i]);
}
console.log('-------------');
})();
for inについては、以下の点に注意してください.
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
$.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「CSS 3」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
上の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');
};
})
for inを使用してDOMListを巡回する
domListは配列ではなくオブジェクトなので、key値が0,1,2...配列と似ているような感じがしますが、直接遍歴した結果は次のようになります.
var domList = document.getElementsByClassName('its');
for(var item in domList) {
console.log(item, ':' + domList[item]);
}
// 0:
//1:
//...
//length: 5
//item: function item() {}
//namedItem: function namedItem() {}
そこでforinを用いて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(){}()の3つの関数が自己実行される方法.
以上が本文のすべての内容で、みんなの学習に役立つことを望みます.