μμ°
-> es6 μ΄μ μ μνκ°λ₯ν λ°μ΄ν° 컬λ μ (λ°°μ΄, λ¬Έμμ΄, μ μ¬λ°°μ΄κ°μ²΄, dom λ±μ ν΅μΌλ κ·μ½ μμ΄ κ°μ λλ¦μ ꡬ쑰λ₯Ό κ°μ§κ³ λ€μν λ°©λ²μΌλ‘ μνν μ μμλ€. es6μμλ μν κ°λ₯ν λ°μ΄ν° 컬λ μ μ μ΄ν°λ μ΄μ νλ‘ν μ½μ μ€μνλ μ΄ν°λ¬λΈλ‘ ν΅μΌνμ¬ ν λΉμ λμμΌλ‘ μ¬μ©ν μ μλλ‘ μΌμννλ€.
λ§μ½, λ€μν λ°μ΄ν° 곡κΈμκ° κ°μμ μν λ°©μμ κ°λλ€λ©΄ λ°μ΄ν° μλΉμλ λ€μν λ°μ΄ν° 곡κΈμμ μνλ°©μμ λͺ¨λ μ§μν΄μΌνλ€. μ΄λ ν¨μ¨μ μ΄μ§ μλ€. νμ§λ§ λ€μν λ°μ΄ν° 곡κΈμκ° μ΄ν°λ μ΄μ νλ‘ν μ½μ μ€μνλλ‘ κ·μ νλ©΄ λ°μ΄ν° μλΉμλ μ΄ν°λ μ΄μ νλ‘ν μ½λ§ μ§μνλλ‘ κ΅¬ννλ©΄ λλ€.
μ΄μ²λΌ μ΄ν°λ μ΄μ νλ‘ν μ½μ λ€μν λ°μ΄ν° 곡κΈμκ° νλμ μν λ°©μμ κ°λλ‘ κ·μ νμ¬ λ°μ΄ν° μλΉμκ° ν¨μ¨μ μΌλ‘ λ€μν λ°μ΄ν° 곡κΈμλ₯Ό μ¬μ©ν μ μλλ‘ λ°μ΄ν° μλΉμμ λ°μ΄ν° 곡κΈμλ₯Ό μ°κ²°νλ 'μΈν°νμ΄μ€'μν μ νλ€.
const testData = {
0: 1,
1: 2,
2: 3,
length: 3
}
//νμ΄
//Array.from μΌλ‘ μ μ¬λ°°μ΄ κ°μ²΄ λλ μ΄ν°λ¬λΈμ λ°°μ΄λ‘ λ³ννλ€.
const arr = Array.from(arrayLike);
console.log(arr);
const fibonacciFunc = function() {
let [pre, cur] = [0,1];
return {
[Symbol.iterator](){return this;}
next(){
[pre, cur] = [cur, pre+ cur];
return {value: cur};
}
};
};
for (const num of fibonacciFunc()){
if(num > 10000) break;
console.log(num);
}
//3κ° μμλ§ μ·¨λ
const [f1, f2, f3] = fibonacciFunc();
console.log(f1,f2,f3)
-> μ΄ν°λ¬λΈμ λ°μ΄ν° 곡κΈμμ μν μ νλ€. λ°°μ΄μ΄λ λ¬Έμμ΄λ±μ λͺ¨λ λ°μ΄ν°λ₯Ό 미리 ν보ν λ€μ λ°μ΄ν°λ₯Ό 곡κΈνλ€. μ μμ λ μ΄ν°λ¬λΈμ μ§μ°νκ°λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μμ±νλ€. μ¦ λ°μ΄ν°κ° νμν μμ μ μμ±νλ κΈ°λ²μ΄λ€.
-> for of λ¬Έμ κ²½μ°, μ΄ν°λ¬λΈμ μνν λ λ΄λΆμμ Next λ©μλλ₯Ό μννλλ°, λ°λ‘ μ΄λ λ°μ΄ν°κ° μμ±λλ€. μ΄λ° μ§μ°νκ°λ₯Ό μ¬μ©νλ©΄ λΉ λ₯Έμ€νμλλ₯Ό κΈ°λν μ μκ³ , λΆνμν λ©λͺ¨λ¦¬λ₯Ό μλΉνμ§ μμΌλ©° 무νλ ννν μ μλ€λ μ₯μ μ΄ μλ€.
μ§μ
const isIterable = v => {
//ꡬννκΈ°
return v !== null && typeof v[Symbol.iterator] === 'function';
}
isIterable([]); //true
isIterable(""); //true
const fibonacci = function() {
[Symbol.iterator]() {
let [pre, cur] = [0,1];
const max = 10;
return {
next() {
[pre, cur] = [cur, pre + cur];
return {value : cur, done: cur >= max };
}
}
}
}
for (const num of fibonacci){
console.log(num);
}
//μ¬κΈ°μ ꡬνν΄ μ£ΌμΈμ!
let [pre, cur] = [0, 1];
const max = 10;
// κ°μ²΄ μ체λ₯Ό 리ν΄..
return {
[Symbol.iterator]() { return this; },
next() {
[pre, cur] = [cur, pre + cur];
return { value: cur, done: cur >= max };
}
}
}
μ΄ κ²½μ°μ μ΄ν°λ¬λΈ μ체λ₯Ό λ°ννλ€. valueκ°μ μΈλΆμμ λ³κ²½ν μ μμ.
μ΄ κ²½μ°μλ max κ° κ³ μ μ΄λ€. fibonacci2 κ° νλμ μ΄ν°λ¬λΈ κ°μ²΄ κ·Έ μ체.