Baseline Widely available
for...of
æã¯ãå復å¯è½ãªãã¸ã§ã¯ããã½ã¼ã¹ã¨ããä¸é£ã®å¤ãå¦çããã«ã¼ããå®è¡ãã¾ããå復å¯è½ãªãã¸ã§ã¯ãã«ã¯ã ãã¨ãã°çµã¿è¾¼ã¿ã® Array
, String
, TypedArray
, Map
, Set
, NodeList
ï¼ããã³ãã®ä»ã® DOM ã³ã¬ã¯ã·ã§ã³ï¼ãåæ§ã« arguments
ãªãã¸ã§ã¯ãããã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ããçæãããã¸ã§ãã¬ã¼ã¿ã¼ãã¦ã¼ã¶ã¼å®ç¾©ã®å復å¯è½ãªãã¸ã§ã¯ããªã©ãããã¾ãã
const array1 = ["a", "b", "c"];
for (const element of array1) {
console.log(element);
}
// Expected output: "a"
// Expected output: "b"
// Expected output: "c"
æ§æ
for (variable of iterable)
statement
variable
å復å¦çã®ååã«ããã¦ãä¸é£ã®ãã¼ã¿ããå¤ãåãåãã¾ããconst
, let
, var
ã®ä½ããã§å®ç¾©ããããã®ãã代å
¥ã®ã¿ã¼ã²ããã¨ãªãã¾ãï¼ä»¥åã«å®£è¨ãã夿°ãããªãã¸ã§ã¯ãããããã£ãæ§é åè§£ãã¿ã¼ã³ãªã©ï¼ãvar
ã§å®£è¨ããã夿°ã¯ã«ã¼ãã®ãã¼ã«ã«å¤æ°ã§ã¯ãªããããªãã¡ for...of
ã«ã¼ãã¨åãã¹ã³ã¼ãã«ãªãã¾ãã
iterable
å復å¯è½ãªãã¸ã§ã¯ãã§ããã«ã¼ããå®è¡ããä¸é£ã®å¤ã®å ã¨ãªããã®ã§ãã
statement
å復å¦çã®ãã³ã«å®è¡ãããæã§ããvariable
ãåç
§ãããã¨ãã§ãã¾ãããããã¯æã使ç¨ãã¦ãè¤æ°ã®æãå®è¡ãããã¨ãã§ãã¾ãã
for...of
ã«ã¼ãã¯ãå復å¯è½ãªãã¸ã§ã¯ãããåãåºããå¤ã 1 ã¤ãã¤é 次å¦çãã¾ããã«ã¼ããå¤ã«å¯¾ãã¦è¡ãåå¦çã¯å復å¦çã¨å¼ã°ããã«ã¼ãã¯å復å¯è½ãªãã¸ã§ã¯ããå復å¦çããã¨è¨ãã¾ããããããã®å復å¦çã§ã¯ãç¾å¨ã®ã·ã¼ã±ã³ã¹å¤ãåç
§ããå¯è½æ§ã®ããæãå®è¡ããã¾ãã
for...of
ã«ã¼ããå復å¯è½ãªãã¸ã§ã¯ããå復å¦çããå ´åãæåã«ãã®å復å¯è½ãªãã¸ã§ã¯ãã® [Symbol.iterator]()
ã¡ã½ãããå¼ã³åºããã¾ããããã¯ã¤ãã¬ã¼ã¿ã¼ãè¿ãã®ã§ããã®è¿ãããã¤ãã¬ã¼ã¿ã¼ã® next()
ã¡ã½ãããå¼ã³åºããã¨ã§ãvariable
ã«ä»£å
¥ãããä¸é£ã®å¤ãçæãããã¨ãã§ãã¾ãã
for...of
ã«ã¼ãã¯ãã¤ãã¬ã¼ã¿ã¼ãå®å
¨ã«å¦çãããæç¹ã§çµäºãã¾ãï¼next()
ã®çµæã¯ãdone: true
ãæã¤ãªãã¸ã§ã¯ãã§ãï¼ãä»ã®ã«ã¼ãæã¨åæ§ã«ãããã¼å¶å¾¡æã statement
å
é¨ã§ä½¿ç¨ãããã¨ãã§ãã¾ãã
break
ã¯ãstatement
ã®å®è¡ã忢ããã«ã¼ãã®å¾ã®æåã®æã«ç§»åãã¾ããcontinue
㯠statement
ã®å®è¡ã忢ããã«ã¼ãã®æ¬¡ã®å復å¦çã«ç§»ãã¾ããfor...of
ã«ã¼ããæ©æã«çµäºããå ´åï¼ä¾ãã°ãbreak
æã«ééããããã¨ã©ã¼ãçºçããå ´åï¼ãreturn()
ã®ã¡ã½ãããå¼ã³åºããã¯ãªã¼ã³ã¢ããå¦çãè¡ããã¾ãã
for...of
ã® variable
é¨åã¯ã=
æ¼ç®åã®åã«æ¥ããã¨ãã§ãããã®ãªãä½ã§ãåãå
¥ãããã¨ãã§ãã¾ããconst
ã使ç¨ãã¦ãã«ã¼ãæ¬ä½ã®ä¸ã§å代å
¥ãããªã夿°ã宣è¨ãããã¨ãã§ãã¾ãï¼å復å¦çéã§ã¯å¤æ´ã§ãã¾ãã2 ã¤ã®å¥åã®å¤æ°ã¨ãã¦æ±ãããããã§ãï¼ãããã§ãªãå ´åã¯ãlet
ã使ç¨ãã¦ãã ããã
const iterable = [10, 20, 30];
for (let value of iterable) {
value += 1;
console.log(value);
}
// 11
// 21
// 31
ã¡ã¢: å復å¦çãã¨ã«æ°ãã夿°ã使ããã¾ããã«ã¼ãæ¬ä½å ã§å¤æ°ãåä»£å ¥ãã¦ããå復å¯è½ãªãã¸ã§ã¯ãï¼ãã®å ´åã¯é åï¼ã®å ã®å¤ã«ã¯å½±é¿ãã¾ããã
æ§é åè§£ã使ç¨ãã¦è¤æ°ã®ãã¼ã«ã«å¤æ°ã«ä»£å
¥ãããã¨ãã§ãã¾ããã for (x.y of iterable)
ã®ãããªããããã£ã¢ã¯ã»ãµã¼ã使ç¨ãã¦ããªãã¸ã§ã¯ãããããã£ã«å¤ã代å
¥ãããã¨ãã§ãã¾ãã
ããããç¹å¥ãªã«ã¼ã«ã«ããã夿°åã¨ã㦠async
ã使ç¨ãããã¨ã¯ç¦ãããã¦ãã¾ããããã¯ç¡å¹ãªæ§æã§ãã
let async;
for (async of [1, 2, 3]); // SyntaxError: The left-hand side of a for-of loop may not be 'async'.
ããã¯ãfor
ã«ã¼ãã§ããæå¹ãªã³ã¼ã for (async of => {};)
ã¨ã®æ§æã®ããã¾ãããé¿ããããã§ãã
const iterable = [10, 20, 30];
for (const value of iterable) {
console.log(value);
}
// 10
// 20
// 30
æååã«å¯¾ããå復å¦ç
æåå㯠Unicode ã³ã¼ããã¤ã³ãåä½ã§å復å¦çãã¾ãã
const iterable = "boo";
for (const value of iterable) {
console.log(value);
}
// "b"
// "o"
// "o"
åä»ãé
åã«å¯¾ããå復å¦ç
const iterable = new Uint8Array([0x00, 0xff]);
for (const value of iterable) {
console.log(value);
}
// 0
// 255
Map ã«å¯¾ããå復å¦ç
const iterable = new Map([
["a", 1],
["b", 2],
["c", 3],
]);
for (const entry of iterable) {
console.log(entry);
}
// ['a', 1]
// ['b', 2]
// ['c', 3]
for (const [key, value] of iterable) {
console.log(value);
}
// 1
// 2
// 3
Set ã«å¯¾ããå復å¦ç
const iterable = new Set([1, 1, 2, 2, 3, 3]);
for (const value of iterable) {
console.log(value);
}
// 1
// 2
// 3
arguments ãªãã¸ã§ã¯ãã«å¯¾ããå復å¦ç
arguments
ãªãã¸ã§ã¯ãã§å復å¦çãããã¨ããã JavaScript 颿°ã«ãã¹ã¦ã®å¼æ°ã渡ããã¨ãã§ãã¾ãã
function foo() {
for (const value of arguments) {
console.log(value);
}
}
foo(1, 2, 3);
// 1
// 2
// 3
NodeList ã«å¯¾ããå復å¦ç
次ã®ä¾ã§ã¯ read
ã¯ã©ã¹ãã<article>
è¦ç´ ã®ç´æ¥ã®åå«ã§ããæ®µè½ã«å¯¾ãã¦è¿½å ãã¾ããDOM ã® NodeList
ã³ã¬ã¯ã·ã§ã³ãå復å¦çãããã¨å®ç¾ãã¾ãã
const articleParagraphs = document.querySelectorAll("article > p");
for (const paragraph of articleParagraphs) {
paragraph.classList.add("read");
}
ã¦ã¼ã¶ã¼å®ç¾©ã®å復å¯è½ãªãã¸ã§ã¯ãã«å¯¾ããå復å¦ç
ç¬èªã®ã¤ãã¬ã¼ã¿ã¼ãè¿ã [Symbol.iterator]()
ã¡ã½ããã§ããªãã¸ã§ã¯ããå復å¦çãã¾ãã
const iterable = {
[Symbol.iterator]() {
let i = 1;
return {
next() {
if (i <= 3) {
return { value: i++, done: false };
}
return { value: undefined, done: true };
},
};
},
};
for (const value of iterable) {
console.log(value);
}
// 1
// 2
// 3
ãªãã¸ã§ã¯ãã [Symbol.iterator]()
ã¸ã§ãã¬ã¼ã¿ã¼ã¡ã½ããã§å復å¦çãã¾ãã
const iterable = {
*[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
},
};
for (const value of iterable) {
console.log(value);
}
// 1
// 2
// 3
å復å¯è½ãªã¤ãã¬ã¼ã¿ã¼ï¼this
ãè¿ã [Symbol.iterator]()
ã¡ã½ãããæã¤ã¤ãã¬ã¼ã¿ã¼ï¼ã¯ãfor...of
ãªã©ã®ã¤ãã¬ã¼ã¿ã¼ãæ³å®ããæ§æã§ã¤ãã¬ã¼ã¿ã¼ã使ç¨å¯è½ã«ãããããªãä¸è¬çãªãã¯ããã¯ã§ãã
let i = 1;
const iterator = {
next() {
if (i <= 3) {
return { value: i++, done: false };
}
return { value: undefined, done: true };
},
[Symbol.iterator]() {
return this;
},
};
for (const value of iterator) {
console.log(value);
}
// 1
// 2
// 3
ã¸ã§ãã¬ã¼ã¿ã¼ã«å¯¾ããå復å¦ç
function* source() {
yield 1;
yield 2;
yield 3;
}
const generator = source();
for (const value of generator) {
console.log(value);
}
// 1
// 2
// 3
æ©æã®è±åº
æåã®ã«ã¼ãã§ break
æãå®è¡ããã¨ãã«ã¼ããæ©æã«çµäºãã¾ããã¤ãã¬ã¼ã¿ã¼ã¯ã¾ã å®äºãã¦ããªãã®ã§ã2 ã¤ç®ã®ã«ã¼ãã¯æåã®ã«ã¼ãã忢ããã¨ããããç¶ç¶ããã¾ãã
const source = [1, 2, 3];
const iterator = source[Symbol.iterator]();
for (const value of iterator) {
console.log(value);
if (value === 1) {
break;
}
console.log("ãã®æååã¯ãã°åºåããã¾ããã");
}
// 1
// åãã¤ãã¬ã¼ã¿ã¼ã使ç¨ããå¥ã®ã«ã¼ãã¯ã
// æå¾ã®ã«ã¼ããçµãã£ãã¨ãããããã¯ã¢ãããã¾ãã
for (const value of iterator) {
console.log(value);
}
// 2
// 3
// ã¤ãã¬ã¼ã¿ã¼ã使ãåãã¾ããã
// ãã®ã«ã¼ãã§ã¯ãå復å¦çã¯å®è¡ããã¾ããã
for (const value of iterator) {
console.log(value);
}
// [åºåãªã]
ã¸ã§ãã¬ã¼ã¿ã¼ã¯ return()
ã¡ã½ãããå®è£
ãã¦ãããã«ã¼ããçµäºããã¨ã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ãæ©æå¾©å¸°ããããã«çºçãã¦ãã¾ãããã®ãããã¸ã§ãã¬ã¼ã¿ã¼ã¯ã«ã¼ããã¾ããã§åå©ç¨ãããã¨ãã§ãã¾ããã
function* source() {
yield 1;
yield 2;
yield 3;
}
const generator = source();
for (const value of generator) {
console.log(value);
if (value === 1) {
break;
}
console.log("ãã®æååã¯ãã°åºåããã¾ããã");
}
// 1
// ã¤ãã¬ã¼ã¿ã¼ã使ãåãã¾ããã
// ãã®ã«ã¼ãã§ã¯ãå復å¦çã¯å®è¡ããã¾ããã
for (const value of generator) {
console.log(value);
}
// [åºåãªã]
for...of 㨠for...in ã¨ã®éã
for...in
ããã³ for...of
æã¯ã両æ¹ã¨ãä½ãã«å¯¾ããç¹°ãè¿ãã§ãããããã®ä¸»ãªéãã¯ãä½ã«å¯¾ããç¹°ãè¿ããªã®ãã¨ããã¨ããã§ãã
for...in
æã¯ããªãã¸ã§ã¯ãã®ãã¹ã¦ã®åæå¯è½ãªããããã£ã«å¯¾ãã¦ãé åºä¸å®ã§ç¹°ãè¿ãå¦çãè¡ãã¾ããfor...of
æã¯ãå復å¯è½ãªãªãã¸ã§ã¯ããå®ç¾©ããé åºã§å¤ãå復å¦çãã¾ãã
次ã®ä¾ã§ã¯ãArray
ã«å¯¾ã㦠for...of
ã«ã¼ã㨠for...in
ã«ã¼ãã使ç¨ããå ´åã®éãã示ãã¦ãã¾ãã
Object.prototype.objCustom = function () {};
Array.prototype.arrCustom = function () {};
const iterable = [3, 5, 7];
iterable.foo = "hello";
for (const i in iterable) {
console.log(i);
}
// "0", "1", "2", "foo", "arrCustom", "objCustom"
for (const i in iterable) {
if (Object.hasOwn(iterable, i)) {
console.log(i);
}
}
// "0" "1" "2" "foo"
for (const i of iterable) {
console.log(i);
}
// 3 5 7
ãªãã¸ã§ã¯ã iterable
㯠objCustom
ããã³ arrCustom
ããããã£ãç¶æ¿ãã¦ãã¾ããObject.prototype
ããã³ Array.prototype
ã®åããããã£ãç¶æ¿ã¨ãããã¿ã¤ããã§ã¼ã³ã§æ ¼ç´ãã¦ããããã§ãã
for...in
ã«ã¼ã㯠iterable
ãªãã¸ã§ã¯ãã®åæå¯è½ãªããããã£ã®ã¿ãåºåãã¾ããé
åã®è¦ç´ ã§ãã 3
, 5
, 7
ã "hello"
ã¯ãåæå¯è½ãªããããã£ã§ã¯ãªãããåºåãã¾ããããããã¯å¤ã§ããé
åã® æ·»å ã arrCustom
ã objCustom
ã¨å
±ã«åºåããã¾ãããªãããããã£ãå復å¦çã«åºã¦ããªãã®ããåãããªãå ´åã¯ãé
åã®å復å¦ç㨠for...in
ã«ãã£ã¨è©³ãã説æãããã¾ãã
2 çªç®ã®ã«ã¼ãã¯æåã®ãã®ã¨ä¼¼ã¦ãã¾ãããObject.hasOwn()
ã使ç¨ãã¦è¦ã¤ãã£ãåæå¯è½ãªããããã£ããªãã¸ã§ã¯ãèªèº«ã®ãã®ã§ããããããªãã¡ç¶æ¿ãããã®ã§ãªããã©ããããã§ãã¯ãã¦ãã¾ãããªãã¸ã§ã¯ãèªèº«ã®ããããã£ã§ããå ´åã¯ããã°åºåãã¾ãã0
, 1
, 2
, foo
ã¯èªèº«ã®ããããã£ã§ããããåºåããã¾ããarrCustom
㨠objCustom
ã¯ç¶æ¿ããããã®ã§ããããã«åºåããã¾ããã
for...of
ã«ã¼ãã¯ãiterable
ãå復å¯è½ãªãã¸ã§ã¯ãã¨ãã¦å®ç¾©ãã¦ããé åºã§ å¤ ãå復å¦çãããã°åºåãã¾ãããªãã¸ã§ã¯ãã® è¦ç´ ã§ãã 3
, 5
, 7
ã¯è¡¨ç¤ºããã¾ããããªãã¸ã§ã¯ãã® ãããã㣠ã¯è¡¨ç¤ºããã¾ããã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4