λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Frontend/JavaScript

[ μžλ°”μŠ€ν¬λ¦½νŠΈ(JavaScript) ] μ „μΉ˜μ—°μ‚°μžμ™€ ν›„μΉ˜μ—°μ‚°μžμ— λŒ€ν•΄ μ•Œμ•„λ³΄μž

by YWTechIT 2021. 11. 5.
728x90

πŸ“ μ „μΉ˜ μ—°μ‚°μžμ™€ ν›„μΉ˜ μ—°μ‚°μžμ— λŒ€ν•΄ μ•Œμ•„λ³΄μž

κ°œλ… μžμ²΄λŠ” μ–΄λ €μš΄ νŽΈλ„ μ•„λ‹ˆκ³  λ‚΄μš©λ„ λ§Žμ§€ μ•Šμ€λ° 기둝을 λ‚¨κΈ°λŠ” μ΄μœ λŠ” μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν’€λ‹€ 보면 ν—·κ°ˆλ¦¬λŠ” κ²½μš°κ°€ 있기 λ•Œλ¬Έμ΄λ‹€. μ „μΉ˜ μ—°μ‚°μžμ™€ ν›„μΉ˜ μ—°μ‚°μžλ₯Ό 잘 ν™œμš©ν•œ λ¬Έμ œλŠ” 투 포인터 κ°œλ…μ„ ν™œμš©ν•œ 두 λ°°μ—΄ ν•©μΉ˜κΈ° λ¬Έμ œμ˜€λ‹€.

 

  1. μ „μΉ˜μ—°μ‚°μž(prefix form): μ—°μ‚°μž(++x, --x)κ°€ λ³€μˆ˜ μ•žμ— μ˜€λŠ”κ²½μš° μ „μΉ˜ ν˜•νƒœμ΄κ³ , 증가/κ°μ†Œκ°€ λ¨Όμ € 이루어지고 값을 리턴함.
  2. ν›„μΉ˜ μ—°μ‚°μž(postfix form): μ—°μ‚°μž(x++, x--)κ°€ λ³€μˆ˜ 뒀에 μ˜€λŠ”κ²½μš° ν›„μΉ˜ ν˜•νƒœμ΄κ³ , 증가/κ°μ†Œ 이전에 λ¨Όμ € 값을 리턴함.

 

728x90

 

μœ„μ—μ„œ μ‚΄νŽ΄λ³Έ κ°œλ…μ„ ν† λŒ€λ‘œ 잠깐 문제λ₯Ό ν’€μ–΄λ³΄μž. μ–΄λ–€ 닡이 λ‚˜μ˜¬μ§€ ν•œλ²ˆ μƒκ°ν•΄λ³΄μž. 잘 λͺ¨λ₯΄κ² λ‹€λ©΄ λ“œλž˜κ·Έλ₯Ό ν•΄λ³΄μž.  예제 1의 counter와 a의 κ°’ λͺ¨λ‘ 2λ‹€. μ™œλƒν•˜λ©΄ ++counter둜 인해 counter도 값이 1μ¦κ°€ν–ˆκ³ , aλŠ” μ¦κ°€ν•œ 값을 λ³€μˆ˜λ‘œ μ €μž₯ν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€. 예제 2λŠ” 쑰금 λ‹€λ₯΄κ²Œ counter의 값은 1, b의 값은 2이닀. μ™œλƒν•˜λ©΄ counter++λŠ” counterλ³€μˆ˜μ˜ 값은 변함이 μ—†κ³  b의 λ³€μˆ˜λ§Œ counterμ—μ„œ 1 λ”ν•œ 값을 λ³€μˆ˜λ‘œ μ§€μ •ν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

// 예제 1
let counter = 1;
let a = ++counter;
console.log(counter, a);
πŸ‘‰πŸ½ 2 2

// 예제 2
let counter = 1;
let b = counter++;
console.log(counter, b);
πŸ‘‰πŸ½ 1 2
λ°˜μ‘ν˜•

λŒ“κΈ€