κ°μ²΄κ° Symbol.iterator
νλ‘νΌν°μ λν ꡬνμ κ°μ§κ³ μλ€λ©΄ μ΄ν°λ¬λΈλ‘ κ°μ£Όν©λλ€.
Array
, Map
, Set
, String
, Int32Array
, Uint32Array
λ±κ³Ό κ°μ μΌλΆ λ΄μ₯ νμ
μλ μ΄λ―Έ Symbol.iterator
νλ‘νΌν°κ° ꡬνλμ΄ μμ΅λλ€.
κ°μ²΄μ Symbol.iterator
ν¨μλ λ°λ³΅ν κ° λͺ©λ‘μ λ°νν©λλ€.
for..of
λ κ°μ²΄μ Symbol.iterator
νλ‘νΌν°λ₯Ό νΈμΆνμ¬, μ΄ν°λ¬λΈ κ°μ²΄λ₯Ό λ°λ³΅ν©λλ€.
λ€μμ λ°°μ΄μ κ°λ¨ν for..of
루νμ
λλ€:
let someArray = [1, "string", false];
for (let entry of someArray)
console.log(entry); // 1, "string", false
}
for..of
λ° for..in
λ¬Έ λͺ¨λ λͺ©λ‘μ λ°λ³΅ν©λλ€; λ°λ³΅λλ κ°μ λ€λ₯΄μ§λ§, for..in
μ λ°λ³΅λλ κ°μ²΄μ ν€ λͺ©λ‘μ λ°ννκ³ , λ°λ©΄μ for..of
λ λ°λ³΅λλ κ°μ²΄μ μ«μ νλ‘νΌν° κ° λͺ©λ‘μ λ°νν©λλ€.
λ€μμ μ΄λ¬ν μ°¨μ΄μ μ 보μ¬μ£Όλ μμ λλ€.
let list = [4, 5, 6];
for (let i in list){
console.log(i); // "0", "1", "2"
}
for (let i of list){
console.log(i); // "4", "5", "6"
}
λ λ€λ₯Έ μ°¨μ΄μ μ for..in
μ λͺ¨λ κ°μ²΄μμ μλνλ€λ κ²μ
λλ€; κ°μ²΄μ νλ‘νΌν°λ₯Ό κ²μ¬νλ λ°©λ²μΌλ‘ μ¬μ©λ©λλ€.
λ°λ©΄μ for..of
λ μ΄ν°λ¬λΈ κ°μ²΄μ κ°μ μ£Όλ‘ κ΄μ¬μ΄ μμ΅λλ€. Map
λ° Set
κ³Ό κ°μ λ΄μ₯ κ°μ²΄λ μ μ₯λ κ°μ μ κ·Όν μ μλ Symbol.iterator
νλ‘νΌν°λ₯Ό ꡬνν©λλ€.
let pets = new Set(["Cat", "Dog", "Hamster"]);
pets["species"] = "mammals";
for (let pet in pets){
console.log(pet); // "species"
}
for (let pet of pets){
console.log(pet); // "Cat", "Dog", "Hamster"
}
ES5 λλ ES3-νΈν μμ§μ λμμΌλ‘ νλ κ²½μ°, λ°λ³΅μλ Array
μ νμ κ°λ§ νμ©ν©λλ€.
μ΄λ° λ°°μ΄μ΄ μλ κ°μ΄ Symbol.iterator
νλ‘νΌν°λ₯Ό ꡬννλλΌλ λ°°μ΄μ΄ μλ κ°μμ for..of
루νλ₯Ό μ¬μ©νλ©΄ μ€λ₯κ° λ°μν©λλ€.
μ»΄νμΌλ¬λ for..of
루νμ λν κ°λ¨ν for
루νλ₯Ό μμ±ν©λλ€, μλ₯Ό λ€λ©΄:
let numbers = [1, 2, 3];
for (let num of numbers){
console.log(num);
}
λ λ€μκ³Ό κ°μ΄ μμ±ν©λλ€:
var numbers = [1, 2, 3];
for (var _i = 0; _i < numbers.length; _i++){
var num = numbers[_i];
console.log(num);
}
ECMAScipt 2015-νΈν μμ§μ νμΌν
νλ κ²½μ°, μ»΄νμΌλ¬λ μμ§μ λ΄μ₯ λ°λ³΅μ ꡬνμ λμμΌλ‘ νλ for..of
루νλ₯Ό μμ±ν©λλ€.