λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

λ…μ„œ λͺ©λ‘/λͺ¨λ”₯λ‹€ Modern JS Deep Dive

(36)
[λͺ¨λ”₯λ‹€] 37μž₯ Setκ³Ό Map 🍧 37.1 Set Set κ°μ²΄λŠ” μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” μœ μΌν•œ κ°’λ“€μ˜ 집합. Set κ°μ²΄λŠ” λ°°μ—΄κ³Ό μœ μ‚¬ν•˜μ§€λ§Œ 차이가 μžˆλ‹€. - λ™μΌν•œ 값을 μ€‘λ³΅ν•˜μ—¬ 포함할 수 μžˆλ‹€. - μš”μ†Œ μˆœμ„œμ— μ˜λ―Έκ°€ μžˆλ‹€. - 인덱슀둜 μš”μ†Œμ— μ ‘κ·Όν•  수 μžˆλ‹€. set 은 μˆ˜ν•™μ  집합을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•œ μžλ£Œκ΅¬μ‘°λ‹€. set 을 톡해 ꡐ집합, 합집합, 차집합, 여집합 등을 κ΅¬ν˜„ν•  수 μžˆλ‹€. 37.1.1 Set 객체의 생성 const set = new Set(); Set μƒμ„±μž ν•¨μˆ˜λ‘œ 생성. 인수λ₯Ό μ „λ‹¬ν•˜μ§€ μ•ŠμœΌλ©΄ 빈 Set 객체가 생성됨. Set μƒμ„±μž ν•¨μˆ˜λŠ” μ΄ν„°λŸ¬λΈ”μ„ 인수둜 전달받아 Set 객체λ₯Ό μƒμ„±ν•œλ‹€. μ΄λ•Œ μ΄ν„°λŸ¬λΈ”μ˜ μ€‘λ³΅λœ 값은 Set 객체에 μš”μ†Œλ‘œ μ €μž₯λ˜μ§€ μ•ŠμŒ. const set1 = new Set([1, 2, 3, 4, 5, 5..
[λͺ¨λ”₯λ‹€] 36μž₯ λ””μŠ€νŠΈλŸ­μ²˜λ§ ν• λ‹Ή λ””μŠ€νŠΈλŸ­μ²˜λ§ ν• λ‹Ή (ꡬ쑰 λΆ„ν•΄ ν• λ‹Ή) κ΅¬μ‘°ν™”λœ λ°°μ—΄κ³Ό 같은 μ΄ν„°λŸ¬λΈ” λ˜λŠ” 객체λ₯Ό Destructuring = 비ꡬ쑰화, ꡬ쑰 파괴 ν•˜μ—¬ 1개 μ΄μƒμ˜ λ³€μˆ˜μ— κ°œλ³„μ μœΌλ‘œ ν• λ‹Ήν•˜λŠ” 것을 λ§ν•œλ‹€. 🐲 36.1 λ°°μ—΄ λ””μŠ€νŠΈλŸ­μ²˜λ§ ν• λ‹Ή λ°°μ—΄ λ””μŠ€νŠΈλŸ­μ²˜λ§ ν• λ‹Ήμ˜ λŒ€μƒ(ν• λ‹Ήλ¬Έμ˜ μš°λ³€)은 μ΄ν„°λŸ¬λΈ”μ΄μ—¬μ•Ό ν•˜λ©°, ν• λ‹Ή 기쀀은 λ°°μ—΄μ˜ μΈλ±μŠ€λ‹€. 즉, μˆœμ„œλŒ€λ‘œ ν• λ‹Ήλœλ‹€. const arr = [1, 2, 3]; const [one, two, tree] = arr; console.log(one, two, three); // 1, 2, 3 const [x, y] = [1, 2]; μš°λ³€μ— μ΄ν„°λŸ¬λΈ” 할당을 ν•˜μ§€ μ•ŠμœΌλ©΄ 였λ₯˜λ‚¨. μš”μ†Œ κ°œμˆ˜κ°€ λ°˜λ“œμ‹œ μΌμΉ˜ν•  ν•„μš”λŠ” μ—†λ‹€. const [a, b] = [1]; console.log(a, b)..
[λͺ¨λ”₯λ‹€] 35μž₯ μŠ€ν”„λ ˆλ“œ 문법 ...을 μ΄μš©ν•΄ 뭉쳐 μžˆλŠ” κ°’λ“€μ˜ 집합을 νŽΌμ³μ„œ κ°œλ³„μ μΈ κ°’λ“€μ˜ λͺ©λ‘μœΌλ‘œ λ§Œλ“ λ‹€. πŸ“Œ μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μ˜ κ²°κ³ΌλŠ” 값이 μ•„λ‹ˆλ‹€. λ”°λΌμ„œ μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μ˜ κ²°κ³ΌλŠ” λ³€μˆ˜μ— ν• λ‹Ήν•  수 μ—†λ‹€. 🩻 35.1 ν•¨μˆ˜ 호좜문의 인수 λͺ©λ‘μ—μ„œ μ‚¬μš©ν•˜λŠ” 경우 Math.max() Math.max(...[1, 2, 4, 5]) 이런 μ‹μœΌλ‘œ μ‚¬μš© κ°€λŠ₯. - 개수λ₯Ό ν™•μ •ν•  수 μ—†λŠ” κ°€λ³€ 인자 ν•¨μˆ˜ πŸ“ŒRest νŒŒλΌλ―Έν„°μ™€ ν—·κ°ˆλ¦¬μ§€ 말 것! Rest νŒŒλΌλ―Έν„° : ν•¨μˆ˜μ— μ „λ‹¬λœ μΈμˆ˜λ“€μ˜ λͺ©λ‘μ„ λ°°μ—΄λ‘œ 전달받기 μœ„ν•¨. μŠ€ν”„λ ˆλ“œ 문법 : μ—¬λŸ¬κ°œμ˜ 값이 ν•˜λ‚˜λ‘œ λ­‰μ³μžˆλŠ” λ°°μ—΄κ³Ό 같은 μ΄ν„°λŸ¬λΈ”μ„ νŽΌμ³μ„œ κ°œλ³„μ μΈ κ°’λ“€μ˜ λͺ©λ‘μ„ λ§Œλ“œλŠ” 것. => μ„œλ‘œ λ°˜λŒ€μ˜ κ°œλ… //Rest 문법 μ˜ˆμ‹œ function foo(...rest) { console.log(Ar..
[λͺ¨λ”₯λ‹€] 34μž₯ μ΄ν„°λŸ¬λΈ” 🐻 34.1 μ΄ν„°λ ˆμ΄μ…˜ ν”„λ‘œν† μ½œ iteration: 반볡, 순회 protocol: 약속, 규격 => μ΄ν„°λ ˆμ΄μ…˜ ν”„λ‘œν† μ½œμ„ λ”°λ₯Έλ‹€λŠ” 것은 μˆœνšŒκ°€ κ°€λŠ₯ν•˜λ‹€ 라고도 말할 수 μžˆλ‹€. => μ΄ν„°λ ˆμ΄μ…˜ ν”„λ‘œν† μ½œμ„ λ”°λ₯΄λŠ” κ°μ²΄λŠ” for...of λ‚˜ spread μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. μ–΄λ–€ 객체든지 μˆœνšŒκ°€ κ°€λŠ₯ν•œ 객체가 되기 μœ„ν•΄μ„œλŠ” iterable ν”„λ‘œν† μ½œμ„ λ”°λΌμ•Όν•œλ‹€. [Symbol.iterator](): Iterator ν”„λ‘œν† μ½œ -> 이 ν•¨μˆ˜λ₯Ό λ§Œλ“€λ©΄? μˆœνšŒκ°€ κ°€λŠ₯ν•œ μ˜€λΈŒμ νŠΈκ°€ λœλ‹€. -> 그리고 이 ν•¨μˆ˜ μ•ˆμ—μ„œ Iterator ν”„λ‘œν† μ½œμ„ λ”°λ₯΄λŠ”, 즉 μˆœνšŒν•˜λŠ” 반볡자λ₯Ό λ¦¬ν„΄ν•˜λŠ” 객체λ₯Ό λ§Œλ“€λ©΄ λœλ‹€. πŸ“Œ μ΄ν„°λ ˆμ΄μ…˜ ν”„λ‘œν† μ½œ 순회 κ°€λŠ₯ν•œ 데이터 μ»¬λ ‰μ…˜μ„ λ§Œλ“€κΈ° μœ„ν•΄ ECMAScript 사양에 μ •μ˜ν•˜μ—¬ 미리 μ•½μ†ν•œ..
[λͺ¨λ”₯λ‹€] 32μž₯ String 🍏 32.1 String μƒμ„±μž ν•¨μˆ˜ String 래퍼 κ°μ²΄λŠ” λ°°μ—΄κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ length ν”„λ‘œνΌν‹°μ™€ 인덱슀λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μˆ«μžν˜•μ‹μ˜ λ¬Έμžμ—΄μ„ ν”„λ‘œνΌν‹° ν‚€λ‘œ, 각 λ¬Έμžμ—΄μ„ ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ κ°–λŠ” μœ μ‚¬ λ°°μ—΄ 객체이닀. λ¬Έμžμ—΄μ€ μ›μ‹œκ°’μ΄λ―€λ‘œ λ³€κ²½ν•  수 μ—†λ‹€. λ³€κ²½ν•˜λ €ν•΄λ„ 였λ₯˜κ°€ λ‚˜μ§€ μ•Šκ³  변경도 μ•ˆλœλ‹€. new String() μ–Έμ œλ‚˜ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€. 32.3.4 String.prototype.startsWith - λŒ€μƒ λ¬Έμžμ—΄μ΄ 인수둜 전달받은 λ¬Έμžμ—΄λ‘œ μ‹œμž‘ν•˜λŠ”μ§€ 확인 -> true, false 리턴 32.3.5 String.prototype.endsWith - λŒ€μƒ λ¬Έμžμ—΄μ΄ 인수둜 전달받은 λ¬Έμžμ—΄λ‘œ λλ‚˜λŠ”μ§€ 확인 -> true, false 리턴 32.3.7 String.prototype.substr..
[λͺ¨λ”₯λ‹€] 31μž₯ RegExp πŸ„ 31.1 μ •κ·œμ‹ ν‘œν˜„μ‹μ΄λž€? μ •κ·œμ‹ ν‘œν˜„μ‹ regular expression : μΌμ •ν•œ νŒ¨ν„΄μ„ 가진 λ¬Έμžμ—΄μ˜ 집합을 ν‘œν˜„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν˜•μ‹ μ–Έμ–΄ - JS 의 고유 문법이 μ•„λ‹ˆλ©°, λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° 언어에 λ‚΄μž₯돼있음. - λ¬Έμžμ—΄μ„ λŒ€μƒμœΌλ‘œ νŒ¨ν„΄ 맀칭 κΈ°λŠ₯을 제곡. ( = νŠΉμ • νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ„ 검색, μΆ”μΆœ, μΉ˜ν™˜ν•  수 μžˆλ‹€.) - μ •κ·œμ‹μ„ μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ 반볡문과 쑰건문을 톡해 νž˜λ“€κ²Œ 체크해야함. πŸ„ 31.2 μ •κ·œμ‹ ν‘œν˜„μ‹μ˜ 생성 μ •κ·œ ν‘œν˜„μ‹ 객체λ₯Ό μƒμ„±ν•˜λŠ” 방법 1. μ •κ·œμ‹ λ¦¬ν„°λŸ΄ - νŒ¨ν„΄κ³Ό ν”Œλž˜κ·Έλ‘œ ꡬ성됨. const reg = /is/i; 2. RegExp μƒμ„±μž ν•¨μˆ˜ const reg = new RegExp(/is/i); πŸ„ 31.3 RegExp λ©”μ„œλ“œ 31.3.1 RegExp.p..
[λͺ¨λ”₯λ‹€] 28μž₯ Number 🦊 28.1 Number μƒμ„±μž ν•¨μˆ˜ Number λŠ” μƒμ„±μž ν•¨μˆ˜λΌμ„œ new μ—°μ‚°μžμ™€ ν•¨κ»˜ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μžˆλ‹€. new Number() λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ (77.1234).toExponential(); //"7.71234e+1" μ •μˆ˜λ₯Ό κ·Έλƒ₯ μ“°λ©΄ μ•ˆλ¨. (μ˜λ―Έκ°€ λͺ¨ν˜Έν•˜κΈ° λ•Œλ¬Έ. JS λŠ” 숫자 λ’€μ˜ . λ₯Ό μ†Œμˆ˜μ μœΌλ‘œ ν•΄μ„ν•œλ‹€. () λ₯Ό ν•¨κ»˜ μ“°λŠ” 것을 μΆ”μ²œν•¨. 28.3.5 Number.prototype.toFixed(μ›ν•˜λŠ” μ†Œμˆ˜μ  자릿수) 숫자λ₯Ό 반올림 -> λ¬Έμžμ—΄λ‘œ λ°˜ν™˜
[λͺ¨λ”₯λ‹€] 27μž₯ λ°°μ—΄ β›³ 27.1 λ°°μ—΄μ΄λž€? μ—¬λŸ¬ 값을 순차적으둜 λ‚˜μ—΄ν•œ 자료ꡬ쑰. μš”μ†Œ: 배열이 κ°–κ³  μžˆλŠ” κ°’ 인덱슀: μš”μ†Œμ˜ μˆœμ„œ 0λΆ€ν„° μ‹œμž‘ length : λ°°μ—΄μ˜ 길이 JS 에 λ°°μ—΄μ΄ν•œ νƒ€μž…μ€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ. 배열은 객체 νƒ€μž…μž„. 객체와 λ°°μ—΄μ˜ 차이 β›³ 27.2 μžλ°”μŠ€ν¬λ¦½νŠΈ 배열은 배열이 μ•„λ‹ˆλ‹€ 🏌️‍♂️ 일반적인 μžλ£Œκ΅¬μ‘°μ—μ„œμ˜ λ°°μ—΄κ³ΌλŠ” μ˜λ―Έκ°€ λ‹€λ₯Έ JS μ—μ„œμ˜ λ°°μ—΄ - λ°°μ—΄μ˜ μš”μ†Œλ₯Ό μœ„ν•œ 각각의 λ©”λͺ¨λ¦¬ 곡간은 λ™μΌν•œ 크기λ₯Ό 갖지 μ•Šμ•„λ„ 됨. - ν¬μ†Œ λ°°μ—΄ : λ°°μ—΄μ˜ μš”μ†Œκ°€ μ—°μ†μœΌλ‘œ 이어져 μžˆμ§€ μ•ŠμŒ ( 밀집 λ°°μ—΄) - λ°°μ—΄μ˜ λ™μž‘μ„ 흉내 λ‚Έ νŠΉμˆ˜ν•œ κ°μ²΄μž„. 🏌️‍♂️ 일반 λ°°μ—΄ vs μžλ°”μŠ€ν¬λ¦½νŠΈ λ°°μ—΄ μž₯단점 정리 일반 λ°°μ—΄ JS λ°°μ—΄ - 인덱슀둜 μš”μ†Œμ— λΉ λ₯΄κ²Œ μ ‘κ·Όν•  수 μžˆλ‹€. - ν•˜μ§€λ§Œ μš”μ†Œλ₯Ό μ‚½μž…, μ‚­μ œν•˜λŠ” 경우..

728x90
λ°˜μ‘ν˜•