front-end/JavaScript

[JavaScript] 35. μŠ€ν”„λ ˆλ“œ 문법

gaan 2023. 6. 20. 19:05

πŸ’‘ ES6μ—μ„œ λ„μž…λœ μŠ€ν”„λ ˆλ“œ 문법 ... 은 ν•˜λ‚˜λ‘œ 뭉쳐 μžˆλŠ” μ—¬λŸ¬ κ°’λ“€μ˜ 집합을 νŽΌμ³μ„œ(spread) κ°œλ³„μ μΈ κ°’λ“€μ˜ λͺ©λ‘μœΌλ‘œ λ§Œλ“ λ‹€.

 

 πŸ”Ή μŠ€ν”„λ ˆλ“œ 문법을 μ‚¬μš©ν•  수 μžˆλŠ” λŒ€μƒμ€ Array, String, Map, Set, DOM μ»¬λ ‰μ…˜, arguments 와 같이 for...of 문으둜 μˆœνšŒν•  수 μžˆλŠ” μ΄ν„°λŸ¬λΈ”μ— ν•œμ •λœλ‹€.

 

πŸ’‘  μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μ˜ 결과물은 κ°’μœΌλ‘œ μ‚¬μš©ν•  수 X, μ‰Όν‘œλ‘œ κ΅¬λΆ„ν•œ κ°’μ˜ λͺ©λ‘μ„ μ‚¬μš©ν•˜λŠ” λ¬Έλ§₯μ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯

πŸ”Ή ν•¨μˆ˜ 호좜문의 인수 λͺ©λ‘

πŸ”Ή λ°°μ—΄ λ¦¬ν„°λŸ΄μ˜ μš”μ†Œ λͺ©λ‘

πŸ”Ή 객체 λ¦¬ν„°λŸ΄μ˜ ν”„λ‘œνΌν‹° λͺ©λ‘

01. ν•¨μˆ˜ 호좜문의 인수 λͺ©λ‘μ—μ„œ μ‚¬μš©ν•˜λŠ” 경우

예제 35-06 μ—λŠ” apply λ©”μ†Œλ“œλ₯Ό ν™œμš©ν•˜μ—¬ Max 값을 κ΅¬ν•œ 경우이고,

예제 35-07 μ—λŠ” μŠ€ν”„λ ˆλ“œ 문법을 μ‚¬μš©ν•˜μ—¬ κ΅¬ν•œ 경우인데, 더 κ°„κ²°ν•˜κ³  가독성이 쒋은 것을 확인해볼 수 μžˆλ‹€.

 

⚠️ Rest νŒŒλΌλ―Έν„°μ™€ ν˜•νƒœκ°€ λ™μΌν•˜μ—¬ ν˜Όλ™ν•˜μ§€ μ•Šλ„λ‘ μ£Όμ˜ν•΄μ•Ό ν•œλ‹€.

➑️ Rest νŒŒλΌλ―Έν„°λŠ” ν•¨μˆ˜μ— μ „λ‹¬λœ μΈμˆ˜λ“€μ˜ λͺ©λ‘μ„ λ°°μ—΄λ‘œ 전달받기 μœ„ν•΄

➑️ μŠ€ν”„λ ˆλ“œ 문법은 μ—¬λŸ¬ 개의 값이 ν•˜λ‚˜λ‘œ 뭉쳐 μžˆλŠ” λ°°μ—΄κ³Ό 같은 μ΄ν„°λŸ¬λΈ”μ„ νŽΌμ³μ„œ κ°œλ³„μ μΈ κ°’λ“€μ˜ λͺ©λ‘μ„ λ§Œλ“€κΈ° μœ„ν•΄

02. λ°°μ—΄ λ¦¬ν„°λŸ΄ λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” 경우

1. concat

πŸ”Ή 2개의 배열을 1개의 λ°°μ—΄λ‘œ ν•©μΉ˜λŠ” 경우 concat λ©”μ„œλ“œ μ‚¬μš©

2. splice

πŸ”Ή λ°°μ—΄μ˜ 쀑간에 λ‹€λ₯Έ λ°°μ—΄μ˜ μš”μ†Œλ“€μ„ μΆ”κ°€ν•˜κ±°λ‚˜ μ œκ±°ν•  λ•Œ μ‚¬μš©

3. λ°°μ—΄ 볡사

πŸ”Ή 배열을 λ³΅μ‚¬ν•˜λ €λ©΄ slice λ©”μ„œλ“œλ₯Ό μ‚¬μš©

➑️ 원본 λ°°μ—΄μ˜ 각 μš”μ†Œλ₯Ό 얕은 λ³΅μ‚¬ν•˜μ—¬ μƒˆλ‘œμš΄ 볡사본을 생성

4. μ΄ν„°λŸ¬λΈ”μ„ λ°°μ—΄λ‘œ λ³€ν™˜

πŸ”Ή ES5μ—μ„œ μ΄ν„°λŸ¬λΈ”μ„ λ°°μ—΄λ‘œ λ³€ν™˜ν•˜λ €λ©΄, Function.prototype.apply λ˜λŠ” Function.prototype.call λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ slice λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•΄μ•Ό ν•œλ‹€.

➑️ μ΄ν„°λŸ¬λΈ”μ™€ μ΄ν„°λŸ¬λΈ”μ΄ μ•„λ‹Œ μœ μ‚¬ λ°°μ—΄ 객체도 λ°°μ—΄λ‘œ λ³€ν™˜ κ°€λŠ₯

 

πŸ”Ή μŠ€ν”„λ ˆλ“œ 문법을 μ‚¬μš©ν•˜μ—¬ λ°°μ—΄λ‘œ λ³€ν™˜ κ°€λŠ₯

➑️ μ΄ν„°λŸ¬λΈ”μ΄ μ•„λ‹Œ μœ μ‚¬ λ°°μ—΄ κ°μ²΄λŠ” μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μ˜ λŒ€μƒμ΄ 될 수 μ—†λ‹€.

03. 객체 λ¦¬ν„°λŸ΄ λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” 경우

πŸ”Ή μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μ˜ λŒ€μƒμ€ μ΄ν„°λŸ¬λΈ”μ΄μ–΄μ•Ό ν•˜μ§€λ§Œ, μŠ€ν”„λ ˆλ“œ ν”„λ‘œνΌν‹° μ œμ•ˆμ€ 일반 객체λ₯Ό λŒ€μƒμœΌλ‘œλ„ μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μ˜ μ‚¬μš©μ„ ν—ˆμš©ν•œλ‹€.

πŸ”Ή μŠ€ν”„λ ˆλ“œ ν”„λ‘œνΌν‹°κ°€ μ œμ•ˆλ˜κΈ° μ΄μ „μ—λŠ” Object.assign λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ 개의 객체λ₯Ό λ³‘ν•©ν•˜κ±°λ‚˜ νŠΉμ • ν”„λ‘œνΌν‹°λ₯Ό λ³€κ²½ λ˜λŠ” μΆ”κ°€ν–ˆλ‹€.

➑️ μŠ€ν”„λ ˆλ“œ ν”„λ‘œνΌν‹°λŠ” Object.assign λ©”μ„œλ“œλ₯Ό λŒ€μ±„ν•  수 μžˆλŠ” κ°„νŽΈν•œ 문법이닀.

 

 

πŸ“– 참고자료

https://www.inflearn.com/course/%EB%AA%A8%EB%8D%98-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%94%A5%EB%8B%A4%EC%9D%B4%EB%B8%8C/dashboard