Skip to content

Latest commit

Β 

History

History
63 lines (46 loc) Β· 1.42 KB

section-0..md

File metadata and controls

63 lines (46 loc) Β· 1.42 KB

Section 0. ν•¨μˆ˜ν˜• μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³ΈκΈ°

평가와 일급

평가

μ½”λ“œκ°€ κ³„μ‚°λ˜μ–΄ 값을 λ§Œλ“œλŠ” 것

일급

const a = 10; // λ³€μˆ˜μ— 담을 수 μžˆλ‹€.
const add10 = a => a + 10; // ν•¨μˆ˜μ˜ 인자둜 μ‚¬μš©λ  수 μžˆλ‹€.
  • κ°’μœΌλ‘œ λ‹€λ£° 수 μžˆλ‹€.
  • λ³€μˆ˜μ— 담을 수 μžˆλ‹€.
  • ν•¨μˆ˜μ˜ 인자둜 μ‚¬μš©λ  수 μžˆλ‹€.
  • ν•¨μˆ˜μ˜ 결과둜 μ‚¬μš©λ  수 μžˆλ‹€.

일급 ν•¨μˆ˜

const f1 = () => () => 1; // ν•¨μˆ˜μ˜ κ²°κ³Όκ°’μœΌλ‘œ ν•¨μˆ˜λ₯Ό 리턴할 수 μžˆλ‹€.
console.log(f1()); // () => 1

const f2 = f1();
console.log(f2());
  • ν•¨μˆ˜κ°€ κ°’μœΌλ‘œ λ‹€λ€„μ§ˆ 수 μžˆλ‹€.
  • μ‘°ν•©μ„±κ³Ό μΆ”μƒν™”μ˜ 도ꡬ

κ³ μ°¨ ν•¨μˆ˜

  • ν•¨μˆ˜λ₯Ό κ°’μœΌλ‘œ λ‹€λ£¨λŠ” ν•¨μˆ˜
  • κ³ μ°¨ ν•¨μˆ˜λŠ” 크게 2κ°€μ§€λ‘œ λ‚˜λˆŒ 수 μžˆλ‹€.
    1. ν•¨μˆ˜λ₯Ό 인자둜 λ°›μ•„μ„œ μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜
    2. ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜ (ν΄λ‘œμ €λ₯Ό λ§Œλ“€μ–΄ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜)
// 1. ν•¨μˆ˜λ₯Ό 인자둜 λ°›μ•„μ„œ μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜
const apply1 = f => f(1);
const add2 = a => a + 2;
console.log(apply1(add2)); // 3

const times = (f, n) => {
    let i = -1;
    while (++i < n) f(i);
}

times(console.log, 3);
times(a => console.log(a + 10), 3);
// 2. ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜ 
const addMaker = a => b => a + b;
const add10 = addMaker(10);

console.log(add10); // b => a + b;
console.log(add10(10)); // 20