[REAL Deep Dive into JS] 12. ํ•จ์ˆ˜

young_palleteยท2022๋…„ 9์›” 1์ผ
0

REAL JavaScript Deep Dive

๋ชฉ๋ก ๋ณด๊ธฐ
13/46

๐ŸŒˆ ์‹œ์ž‘ํ•˜๋ฉฐ

ํ•จ์ˆ˜๊ฐ€ ๋“œ๋””์–ด ๋‚˜์˜ค๋„ค์š”.
์‚ฌ์‹ค ํ•จ์ˆ˜๋ž€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์ค‘์š”์‹œ ๋‹ค๋ค„์ง€๋Š” ๊ฐœ๋…์ด์ฃ .

์‚ฌ์‹ค ๋ฐฉ๋Œ€ํ•œ ์–‘์ด์ง€๋งŒ, ํ•จ์ˆ˜๋ผ๋Š” ๋ง์„ ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ๋ฐ›์•„๋“ค์ด์ง€ ๋ง๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์˜ˆ์ „๋ถ€ํ„ฐ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค๋Š” ๋“ฏ์ด, ๊ฐ€๋ฒผ์šด ํ˜ธํก์œผ๋กœ ๋ณด์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ ค์š”.

"๊ทธ๋ ‡๊ฒŒ ํŽธํžˆ ๊ฐ€๋‹ค ๋ณด๋ฉด, ์ƒ๊ฐ๊ณผ ๋‹ฌ๋ฆฌ ํ•จ์ˆ˜์™€ ๋น„์Šทํ•œ ์‚ฌ๊ณ ๋ฅผ ์˜ˆ์ „๋ถ€ํ„ฐ ํ•˜๊ณ  ์žˆ๋˜ ์ž์‹ ์„ ์กฐ์šฐํ•  ์ˆ˜๋„ ์žˆ์–ด์š”. ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”!" ๐Ÿ˜‰

๐Ÿšฆ ๋ณธ๋ก 

์šฐ๋ฆฌ ์ธํ’‹, ์•„์›ƒํ’‹์ด๋ผ๋Š” ๋ง, ๋งŽ์ด ์“ฐ์ฃ ?
ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ฐธ ์ข‹์•„์š”. ์ธํ’‹์„ ํˆฌ์ž…ํ–ˆ์„ ๋•Œ, ์•„์›ƒํ’‹์— ๋Œ€ํ•œ ๊ธฐ๋Œ“๊ฐ’์„ ๋‹ค๋ฅธ ์ธ๋ฌธํ•™๊ณผ ๋‹ฌ๋ฆฌ ์–ด๋Š ์ •๋„ ๋น„์Šทํ•˜๊ฒŒ ์‚ฐ์ถœํ•  ์ˆ˜ ์žˆ๊ฑฐ๋“ ์š”. ์ œ๊ฐ€ ๊ฐœ๋ฐœ์— ๋ฐ˜ํ•œ ์ด์œ ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์•„, ์žก์†Œ๋ฆฌ๊ฐ€ ๊ธธ์—ˆ๊ตฐ์š”.
์ด๋Ÿฐ ๋ง์„ ์™œ ํ–ˆ๋ƒ๋ฉด, ํ•จ์ˆ˜๊ฐ€ ๋ฐ”๋กœ ๊ทธ๋Ÿฐ ์—ญํ• ์„ ํ•ด์ค๋‹ˆ๋‹ค.
์Œ. ์˜ˆ์‹œ๋กœ ์ž ๊น, ํ•™๊ต์— ๊ฐ€๋Š” ์–ด๋–ค ๊ผฌ๋งˆ์˜ ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์–ด๋ณผ๊นŒ์š”?

๐Ÿ™‡๐Ÿปโ€โ™‚๏ธ: ์ œ๊ฐ€ ์˜ค๋Š˜ ๋„ˆ๋ฌด ํ”ผ๊ณคํ•ด์„œ ๊ณต๋ถ€ ๋Œ€์‹  ์ผ์ฐ ์ž์•ผํ•  ๊ฒƒ ๊ฐ™์€๋ฐ, ํ˜น์‹œ ์ œ๊ฐ€ ๋‚ด์ผ 7์‹œ๊นŒ์ง€ ํ•™๊ต์— ๊ฐ€๋ ค๋ฉด ๋ช‡ ์‹œ์— ์ž๋„ ๋ ๊นŒ์š”?

์–ด์ฐŒ ๋ณด๋ฉด ๊ทธ๋ƒฅ ์ผ์ƒ ์† ์ด์•ผ๊ธฐ์ง€๋งŒ, ์‚ฌ์‹ค ์ด๊ฒƒ ์—ญ์‹œ ์ธํ’‹๊ณผ ์•„์›ƒํ’‹์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํ•จ์ˆ˜๋กœ ํ’€์ดํ•  ์ˆ˜ ์žˆ์–ด์š”.
ํ•œ ๋ฒˆ, ์ด ์นœ๊ตฌ๊ฐ€ ์–ธ์ œ ์ž์•ผ ํ•˜๋Š”์ง€๋ฅผ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด๋ณผ๊นŒ์š”?

function getSleepAt(arriveAt) {  
    const fallingSleepTime = 6;
    const readyTime = 0.5;
    const goSchoolTakenTime = 0.25;

  	const result = arriveAt - sleepTime - readyTime - goSchoolTakenTime;
  	
    return result > 0 ? result : 24 + result;
}

console.log(getSleepAt(7) // 0.25 - 00์‹œ 15๋ถ„์ด๊ตฐ!

์•ฝ๊ฐ„ ์ดํ•ด๊ฐ€ ๋˜์‹œ๋‚˜์š”?
๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ๊ผฌ๋งˆ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ จ์˜ ์ธํ’‹๊ณผ ์•„์›ƒํ’‹์„ ์‚ฐ์ •ํ•œ ๊ฑฐ์—์š”.

  • ์ธํ’‹: ๋‚ด์ผ๊นŒ์ง€ ๊ฐ€์•ผ ํ•  ์‹œ๊ฐ„
  • ์•„์›ƒํ’‹: ์–ธ์ œ ์ž์•ผ ํ• ๊นŒ!
  • ๋‚ด๋ถ€ ๋กœ์ง: ๋‚ด๊ฐ€ ํ‰์†Œ์— ๋ช‡ ์‹œ๊ฐ„ ์ž ์ž๋Š”์ง€, ํ•™๊ต ์ค€๋น„์— ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š”์ง€, ํ•™๊ต๊นŒ์ง€ ๊ฐ€๋Š”๋ฐ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š”์ง€๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ์ด๋ฅผ ๋ชฉํ‘œ ์‹œ๊ฐ„์— ๋ฐ˜์˜ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ, ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ๋ง์ž๊ตฌ์š”.
์šฐ๋ฆฌ๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •๋“ค์„ ์ปดํ“จํŒ… ์‚ฌ๊ณ ๋กœ ์ผ๋ชฉ์š”์—ฐํ•˜๊ฒŒ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ˜์˜ํ•œ ๊ฒƒ! ๊ทธ๊ฒƒ์ด ํ•จ์ˆ˜๋ผ ํ•  ์ˆ˜ ์žˆ๊ฒ ์–ด์š”. ๊ฝค๋‚˜ ์žฌ๋ฐŒ์ง€ ์•Š๋‚˜์š”? ๐Ÿ˜‰

์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์œ ์šฉํ•œ ๊ฒƒ์€ ๋ฌด์—‡์ผ๊นŒ์š”?

  1. ์žฌ์‚ฌ์šฉ์„ ํ•  ์ˆ˜ ์žˆ์–ด์š”! - ์•ž์œผ๋กœ ์ € ๊ผฌ๋งˆ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ๋„ฃ์œผ๋ฉด ์‰ฝ๊ฒŒ ๊ฐˆ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์–ด์š”!
  2. ์ฝ”๋“œ๊ฐ€ ์•ˆ์ •์ ์ด์—์š”! - ๋‹ค๋ฅธ ์žก์Šค๋Ÿฐ ํ–‰๋™๋“ค์ด ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ฒŒ, ์•„์˜ˆ ์™ธ๋ถ€ ๋กœ์ง์ด ์กฐ์ž‘ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ธ”๋ก์œผ๋กœ ๊ฐ์ŒŒ์–ด์š”. ์ด์ œ ๊ผฌ๋งˆ๋Š” ์ •ํ™•ํ•œ ๊ณ„์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ์–ด์š”!
  3. ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์š”! - ํ•จ์ˆ˜ ์ด๋ฆ„๋งŒ ๋ด๋„, ๋‚ด๋ถ€์— ๋“ค์–ด๊ฐ„ ๋กœ์ง๋“ค์ด ๋ฌด์—‡์„ ์œ„ํ•จ์ธ์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ์š”!

๊ทธ๋ž˜๋„ ์šฐ๋ฆฌ๋Š” ์ข€ ๋” ์ œ๋Œ€๋กœ ์ •๋ฆฌํ•˜๊ณ  ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ๊ฒ ์ฃ ? ์ €๋Š” ํ•จ์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •๋ฆฌํ•  ๊ฒƒ ๊ฐ™์•„์š”.

์ •๋ฆฌ:
1. ํ•จ์ˆ˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ๋ธ”๋ก({})์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์›ํ•˜๋Š” ๋กœ์ง์ด๋‚˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์–ด๋‚ด๋Š” ๋ฌธ(statement)์ด๋‹ค!
2. ์ ์žฌ์ ์†Œ์— ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜๋Š” ๊ฐ€๋…์„ฑ, ์žฌ์‚ฌ์šฉ์„ฑ, ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค!

ํ•จ์ˆ˜ ์ •์˜์™€ ํ˜ธ์ถœ

์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์˜ ๊ทธ ๋ชจ์–‘! ๊ทธ๊ฑฐ์—์š”.

function add(x, y) { return x + y; } // ์ •์˜

add(1 + 2) // ํ˜ธ์ถœ

์ด๊ฒŒ ํ•จ์ˆ˜ ์ •์˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ •์˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด๋ผ๊ณ  ํ•ด์š”.
๋ญ”๊ฐ€ ๋ชจํ˜ธํ•˜์ฃ ? ๊ทธ๋ƒฅ ์ •๋ง ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด, ๋‹ค์Œ 4๊ฐ€์ง€๊ฐ€ ํ•จ์ˆ˜ ์ •์˜๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ผ์š”.

  • ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ
  • ํ•จ์ˆ˜ ํ‘œํ˜„์‹
  • Function ์ƒ์„ฑ์ž ํ•จ์ˆ˜
  • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

๋˜ ์ฑ…์—์„œ ๋ณด๋‹ˆ, '๋ณ€์ˆ˜์—์„œ์˜ ์„ ์–ธ'์ด ๊ณง 'ํ•จ์ˆ˜์—์„œ๋Š” ์ •์˜'๋กœ ํ‘œํ˜„๋œ๋‹ค๊ณ  ํ•˜๋„ค์š”! ๐Ÿ™‡๐Ÿปโ€โ™‚๏ธ

ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ

๋‹น์—ฐํ•œ ๋ง์ด์ง€๋งŒ, ์„ ์–ธ์œผ๋กœ ๋˜์—ˆ์„ ๋•Œ์—๋Š” ์ด๋ฆ„์„ ์ƒ๋žตํ•  ์ˆ˜ ์—†์–ด์š”.

function () {
} // Uncaught SyntaxError: Function statements require a function name

๐Ÿ”ฅ ์–ด๋ผ? ๊ทธ๋Ÿฐ๋ฐ, ์ €๋ ‡๊ฒŒ ํ•จ์ˆ˜ ์ด๋ฆ„ ์•ˆ ์“ฐ๋Š” ๊ฑฐ, ๋ช‡ ๋ฒˆ ๋ณด์•˜๋Š”๋ฐ์š”?

๋งž์•„์š”. ๋‹ค์Œ๊ณผ ๊ฐ™์ด, ๊ฐ’์œผ๋กœ ํ• ๋‹นํ•ด์ค€๋‹ค๋ฉด ๊ฐ€๋Šฅํ•ด์š”! ์ด๋ฅผ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
ํ•จ์ˆ˜๋Š” ํŠน์ดํ•˜๊ฒŒ ๋ฌธ๋„ ๋˜์ง€๋งŒ, ํ‘œํ˜„์‹์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•œ ์นœ๊ตฌ์—์š”! ๐Ÿ˜ฎ

var b = function() {};
b(); // undefined

์ด๋Ÿฐ ์ด๋ฆ„์ด ์—†๋Š” ์นœ๊ตฌ๋ฅผ ์ต๋ช…ํ•จ์ˆ˜๋ผ๊ณ  ํ•ด์š”.
์‚ฌ์‹ค ํ‘œํ˜„์‹์œผ๋กœ ๊ฐ€๋ฉด, ์ด๋ฆ„์ด ์—†์–ด๋„ ๋ฉ๋‹ˆ๋‹ค.
์ด์œ ๋Š”, ์ฑ…์— ๋”ฐ๋ฅด๋ฉด ํ•จ์ˆ˜ ์ด๋ฆ„์€ ์• ๋‹น์ดˆ ํ•จ์ˆ˜ ๋ชธ์ฒด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

์ด๋ฅผ ๋ฏฟ์ง€ ๋ชปํ•˜๊ฒ ๋‹ค๋ฉด, ๋‹ค์Œ์„ ํ•ด๋ณด์‹œ์ฃ !

(function c() {});
c(); // Uncaught ReferenceError: c is not defined

์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋กœ์ง์œผ๋กœ ํ˜๋Ÿฌ๊ฐ”๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  1. ํ•จ์ˆ˜ ํ‘œํ˜„์‹์œผ๋กœ ํ•ด์„ํ•ด์•ผ์ง€!
  2. ๊ทธ๋Ÿฐ๋ฐ ์–˜๋Š” ์‹ ์•„๋ƒ? ์Œ... ์‹์—๋Š” ๋”ฐ๋กœ ๋ณ€์ˆ˜๋ฅผ ํ• ๋‹นํ•˜์ง€๋Š” ์•Š๋Š”๋ฐ...
  3. ๊ทธ๋ƒฅ ์‹๋ณ„์ž๊ฐ€ ์—†๋Š” ์‹์œผ๋กœ ์น˜์ง€ ๋ญ. (ํœ™)

์—ฌ๊ธฐ์„œ ๋‚˜์˜ค๋Š” ๊ฒŒ ๋˜ ๊ธฐ๋ณธ๊ธฐ์ฃ !
์šฐ๋ฆฌ๋Š” ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”(ํ‰๊ฐ€ ๋‹จ๊ณ„) - ์ดํ›„ ์‹คํ–‰์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ด์ „์— ํ™•์ธํ–ˆ์ฃ ? ๐Ÿ˜‰
์ด๋ฏธ ๋ฆฌํ„ฐ๋Ÿด์ฒ˜๋Ÿผ ๊ฐ’์œผ๋กœ ๋ฌถ์–ด์„œ ๋„˜์–ด๊ฐ„ ๋‹จ๊ณ„์—์„œ๋Š” ์ดํ›„ ์‹คํ–‰์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์ค˜์•ผ ํ•ด์š”.

๋ฐ˜๋ฉด ๋‚˜๋จธ์ง€ ์‹คํ–‰ ๊ตฌ๋ฌธ๋“ค์€ (์œ„์˜ ๋กœ์ง์—์„œ์˜ c()) ์•„์ง ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์‹๋ณ„์ž๋ฅผ ์ฐพ๋Š๋ผ ํ—ˆ์šฐ์ ๋Œ€๊ณ  ์žˆ์–ด์š”. ๐Ÿ˜ญ ๋”ฐ๋ผ์„œ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์ฐธ์กฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒ๋‹ˆ๋‹ค!

๋”ฐ๋ผ์„œ ํ•จ์ˆ˜ ์ด๋ฆ„์€ ์‹๋ณ„์ž๋ผ๊ธฐ ๋ณด๋‹ค๋Š”, ๋ชธ์ฒด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์‹๋ณ„์ž๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”.
๋Œ€์‹ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ ๋•Œ๋Š” ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ํ•จ์ˆ˜ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ์ด๋ฆ„์˜ ์‹๋ณ„์ž๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•œ๋‹ค๊ณ  ํ•˜๋„ค์š”! ๐Ÿ˜ฎ

์ผ๊ธ‰ ๊ฐ์ฒด

์ด๋ฆ„์ด ์–ด๋ ค์›Œ์„œ ๊ทธ๋Ÿฐ๋ฐ, ๋ง‰์ƒ ๋‚ด์šฉ์„ ๊นŒ๋ณด๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค.
ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๋ฆฌํ„ฐ๋Ÿด๋กœ๋„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์ฃ . ๊ทธ๋ฆฌ๊ณ  ๋ฆฌํ„ฐ๋Ÿด์€ ๋ณ€์ˆ˜์— ํ• ๋‹น ๊ฐ€๋Šฅํ•œ '๊ฐ’'์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•จ์ˆ˜๋Š” '๊ฐ’'์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์—์š”. ์ด๋Ÿฌํ•œ ๊ฒƒ์„ '์ผ๊ธ‰ ๊ฐ์ฒด'๋ผ๊ณ  ํ•˜๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜์˜ ํŠน์„ฑ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋˜๊ฒ ๋„ค์š”.

์ด ์ผ๊ธ‰ ๊ฐ์ฒด์˜ ํŠน์„ฑ์ธ '๊ฐ’'! ๊ผญ ๊ธฐ์–ตํ•ด์ฃผ์„ธ์š”. ์•ž์œผ๋กœ ํด๋กœ์ € ๋“ฑ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋‚˜์˜ต๋‹ˆ๋‹ค!

ํ•จ์ˆ˜ ์ƒ์„ฑ ์‹œ์ ๊ณผ ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

์ด๊ฑฐ... ๊ธธ๊ฒŒ ์„ค๋ช…๋˜์–ด์ ธ ์žˆ๋Š”๋ฐ, ๊ทธ๋ƒฅ ์ž˜ ์ƒ๊ฐํ•˜๋ฉด ์‰ฌ์›Œ์š”. ๊ณ„์† ๊ฐ™์€ ๋ง์ž…๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ํ‘œํ˜„์‹ = ๋ณ€์ˆ˜์— ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์ด ํ• ๋‹น๋œ ๋ฌธ์ด์ฃ ?

๊ทธ๋ ‡๋‹ค๋ฉด, ํ•จ์ˆ˜๋Š” ์ด๋ฏธ ๊ฐ’์œผ๋กœ ํ‘œํ˜„๋˜์—ˆ๊ณ , ๋ณ€์ˆ˜๋Š” ๋จผ์ € ์„ ์–ธ์ด ๋œ ์ƒํƒœ์—์š”.
๊ทธ๋ฆฌ๊ณ  ๊ฐ’์„ ์‹คํ–‰ํ•  ์‹œ์ ์—์„œ ์‹์— ๋งž์ถฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ฃ .
๊ทธ์ € ํ•จ์ˆ˜ ๊ฐ์ฒด๋ผ๋Š” '๊ฐ’'์ด๋ผ๋Š” ์ƒํƒœ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์—์„œ๋Š” ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…๋งŒ ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค! ์‰ฝ์ฃ ? ๐Ÿฅฐ

Function, ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

Function์€ ์‹ค์ œ๋กœ ์กฐ์ž‘ํ•  ์ผ์ด ์—†์„ ๊ฒƒ ๊ฐ™์•„์š”. ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ์„ฑํ•œ ํ•จ์ˆ˜์™€ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . (์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์—์„œ์˜ ์‹๋ณ„์ž ์ฐธ์กฐ ๋ถˆ๊ฐ€)

์šฐ๋ฆฌ๊ฐ€ ์ข€ ๋” ์‚ดํŽด์•ผ ํ•  ๊ฒƒ์€ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์—์š”.

var a = () => {};

์ด ์นœ๊ตฌ๋Š” ์ข€ ํŠน์ดํ•œ๋ฐ์š”.
this๋กœ ์ธํ•œ ๋™์  ์Šค์ฝ”ํ”„์˜ ๋Œ€ํ™˜์žฅ ํŒŒํ‹ฐ๋ฅผ ์–ด๋Š ์ •๋„ ์™„ํ™”์‹œํ‚จ ์นœ๊ตฌ์—์š”. ์•„๋งˆ this๋ฅผ ์ด์•ผ๊ธฐํ•  ๋•Œ ๋ณผ ๊ฒƒ ๊ฐ™์œผ๋‹ˆ, ๋‚˜์ค‘์— ์‚ดํŽด๋ณด์ฃ !

ํ•จ์ˆ˜ ํ˜ธ์ถœ

๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ธ์ˆ˜

์Œ, ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ค‘์š”ํ•˜๊ฒ ๋„ค์š”.
๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์‹คํ–‰ ๋‹จ๊ณ„์—์„œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์นœ๊ตฌ๋“ค์ด์—์š”. ๋”ฐ๋ผ์„œ ๋จผ์ € ์„ ์–ธ - ์ดˆ๊ธฐํ™”์˜ ํ‰๊ฐ€๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ ํ›„, ์ธ์ˆ˜๊ฐ€ ํ• ๋‹น๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ „๊ฐœ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋งŒ์•ฝ ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ๊ฐ’์€ undefined์ž…๋‹ˆ๋‹ค.

function a(b) {
	console.log('b: ', b);
}

a(); // b: undefined

๊ทธ๋ ‡๋‹ค๋ฉด, ๋งŒ์•ฝ ๋” ๋งŽ์ด ์ธ์ˆ˜๋ฅผ ๋„ฃ์—ˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?
์‚ฌ์‹ค ์ผ๋ฐ˜์ ์ธ ๋กœ์ง ์ƒ์—์„œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ๋งŒ ๋‹ค๋ค„์ง€๋Š”๋ฐ์š”.
๋‹ค๋งŒ arguments ๊ฐ์ฒด์— ๋ณด๊ด€์ด ๋˜๊ธฐ๋Š” ํ•ด์š”.

์ฐธ๊ณ ๋กœ ์ด ๊ฐ์ฒด๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค!

function a(b) {
	console.log(arguments.map(a => a));
}

a(1,2,3,4,23) // arguments.map is not a function

์ธ์ˆ˜ ํ™•์ธ

์Œ, ์˜ˆ์ „์— ๊ธ€๋กœ ๋‚จ๊ฒผ๋˜ ํƒ€์ž… ๊ฐ€๋“œ๊ฐ€ ์—ฌ๊ธฐ์„œ ์“ฐ์—ฌ์ง€๋Š”๊ตฐ์š”!
์•ˆ์ •์ ์ธ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ค‘์š”ํ•œ ์Šต๊ด€์ž…๋‹ˆ๋‹ค. ๐Ÿ˜‰

๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜

์ฑ…์— ๋‚˜์˜จ๋Œ€๋กœ, ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” ์กด์žฌํ•˜์ง€ ์•Š์•„์š”. ๋‹ค๋งŒ ์ ์œผ๋ฉด ์ ์„ ์ˆ˜๋ก ์œ ์ง€๋ณด์ˆ˜์— ์ข‹์•„์š”.
๋‹ค๋งŒ ์ด ๋ฌธ๊ตฌ๋Š” ์ •๋ง ์ข‹๋„ค์š”.

ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐ€์ง€ ์ผ๋งŒ ํ•ด์•ผ ํ•˜๋ฉฐ, ๊ฐ€๊ธ‰์  ์ž‘๊ฒŒ ๋งŒ๋“ค์–ด๋ผ.

์ž˜๊ฒŒ ์ชผ๊ฐค ์ˆ˜๋ก, ์ชผ๊ฐ  ํ•จ์ˆ˜๋“ค์„ ๋‹ค์‹œ ๋˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋Š˜์–ด๋‚œ๋‹ต๋‹ˆ๋‹ค!
(๋‹ค๋งŒ, ์ด๋ฅธ ์–˜๊ธฐ์ง€๋งŒ ๋„ˆ๋ฌด ์ง€๋‚˜์นœ ํ•จ์ˆ˜ ๋ถ„ํ• ์€ ๋˜ ์ฝ”๋“œ์˜ ๋ถ„์‚ฐ์œผ๋กœ ์ธํ•ด ๊ณ ํ†ต๋ฐ›์„ ์ˆ˜๋„ ์žˆ์–ด์š”. ์˜ˆ์ปจ๋Œ€ ๋‹จ์ˆœํžˆ ๋”ํ•˜๋ฉด ๋˜๋Š” ๋กœ์ง์„ ๋˜ add๋ผ๋Š” ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•  ํ•„์š”๋Š” ์—†๋‹ค๋Š” ๊ฑฐ์ฃ . ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํžˆ! ๐Ÿ˜‰)

๋ฐ˜ํ™˜๋ฌธ

return! ํ•จ์ˆ˜์™€ ์“ธ ์ˆ˜ ์žˆ๋Š” ์นœ๊ตฌ์—์š”.
๊ฐ€๋”์€ ๋ชจ๋“  ๋กœ์ง์„ ๋Œ ํ•„์š” ์—†์ด ์›ํ•˜๋Š” ๊ฐ’๋งŒ ์ฐพ๊ณ  ๋กœ์ง์„ ๋๋‚ด๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ๊ฒ ์ฃ ? ๊ทธ ๊ฐ’์„ ๋“ค๊ณ  ๋น ์ ธ๋‚˜์˜ค๊ธฐ ์œ„ํ•œ ์นœ๊ตฌ์—์š”.

๋ฐ˜ํ™˜๋ฌธ์ด ์žˆ๊ธฐ์—, ํ•จ์ˆ˜๋Š” ๋น„๋กœ์†Œ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฑฐ์ฃ  ๐Ÿฅฐ

function ํ˜„์žฌ์‹œ๊ฐ๊ตฌํ•˜๊ธฐ(now) {
	if (now < 12) {
    	return '์˜ค์ „'
    }
  	
  	return '์˜คํ›„';
}

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐ˜ํ™˜๋ฌธ์ด ์—†๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?
ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰๊ฐ์ฒด๋กœ์จ ์„ฑ์งˆ์„ ์œ ์ง€ํ•ด์•ผ ํ•ด์š”. ์ผ๊ธ‰๊ฐ์ฒด๊ฐ€ ๋ญ์ฃ ? ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•˜์ฃ !
๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ˜ํ™˜๋ฌธ์„ ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„, ์•”๋ฌต์ ์œผ๋กœ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค!

์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ๊ณผ ์™ธ๋ถ€ ์ƒํƒœ์˜ ๋ณ€๊ฒฝ

์ด๋งˆ์ €๋„ ๊ธธ๊ฒŒ ๋‚˜์™”๋Š”๋ฐ์š”, ๊ฒฐ๊ตญ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ๊ฐ’์˜ ํƒ€์ž…(์›์‹œ ํƒ€์ž…, ๊ฐ์ฒด ํƒ€์ž…)์˜ ํŠน์„ฑ์„ ์ž˜ ๋ฐ˜์˜ํ•œ๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค.

ํŠนํžˆ ๊ฐ์ฒด ํƒ€์ž…์€ ๋ถˆ๋ณ€์„ฑ์— ๋Œ€ํ•œ ์ด์Šˆ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐ”๋กœ ์ง์ „ ํŒŒํŠธ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ–ˆ์ฃ ? ๐Ÿ˜‰ ๊ฐ์ฒด ํƒ€์ž…์—์„œ์˜ ์ฐธ์กฐ๊ฐ’์€ ๋‹ค๊ฐ™์€ ๊ฐ์ฒด ๊ฐ’์„ ๊ณต์œ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์— ์œ ๋…ํ•ด์ฃผ์„ธ์š”!

IIFE(์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜)

์€๊ทผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์นœ๊ตฌ์—์š”.
ํŠนํžˆ ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์˜ค์—ผ์‹œํ‚ค์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋ณดํ†ต ์ดˆ๊ธฐํ™”ํ•  ๋•Œ๋งŒ ๋™์ž‘ํ•ด์•ผ ํ•  ๋กœ์ง์ด ์žˆ์„ ๋•Œ ์จ์š”! ๐Ÿ˜‰

(() => {
	// ...
})();

// ๊ฐ’์œผ๋กœ๋„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์–ด์š”!
const total = (((a, b) => a + b)(1, 2));
console.log(total); // 3

์‰ฝ๊ฒŒ ์ƒ๊ฐํ•œ๋‹ค๋ฉด, ()์œผ๋กœ ๊ฐ์‹ผ ์ˆœ๊ฐ„, ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด ํ‘œํ˜„์‹์ด ๋˜์ฃ ?
๊ทธ ์‹์„ ๋ฐ”๋กœ ํ˜ธ์ถœํ–ˆ๋‹ค!๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ํŽธํ•ฉ๋‹ˆ๋‹ค :)

์ €๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ €๋ ‡๊ฒŒ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋กœ๋„ ํ•  ๋•Œ๋„ ๋งŽ์ง€๋งŒ, ์ด๋ฆ„์„ ์จ์ฃผ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์–ด์š”.
์ด์œ ๋Š”, ์ € ๋กœ์ง์— ๋Œ€ํ•œ ๋ถ€์—ฐ ์„ค๋ช…์„ ์‹๋ณ„์ž๋กœ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ๊ทธ๋ž˜๋„ ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์œผ๋‹ˆ๊นŒ์š”! ๐Ÿ˜†

์žฌ๊ท€ํ•จ์ˆ˜

์Œ... ์ด ์นœ๊ตฌ๋Š” ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ์นœ๊ตฌ์ฃ !
๋”ฐ๋ผ์„œ ์ž˜๋ชป๋œ ์‚ฌ์šฉ์€ ๋ฌดํ•œ ํ˜ธ์ถœ๋กœ ์ธํ•œ ์ฝœ์Šคํƒ ํญ๋ฐœ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค ๐Ÿฅฒ

ํ•ญ์ƒ ๋ฆฌํ„ด์„ ์–ด๋–ป๊ฒŒ ํ• ์ง€๋ฅผ ๊ณ ๋ฏผํ•˜๋ฉด์„œ ํ•˜๊ธฐ!
๊ฒฐ๊ตญ์—๋Š” ๋ฆฌํ„ด ๊ฐ’์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ๊ฑฐ๋‹ˆ๊นŒ์š”. ๐Ÿ™†๐Ÿป

function factorial(num, result = 1) {
  	if (typeof num !== 'number' || num < 0) return null;
  
	return num < 1 ? result : factorial(num - 1, result * num); 
}

console.log(factorial(5)) // 120;

์ค‘์ฒฉ ํ•จ์ˆ˜

ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ๋˜ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ์–ด์š”.
์ด๋ ‡๊ฒŒ ํ•˜๋Š” ์ด์œ ๋Š”, ์ด ์—ญ์‹œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•จ์ด์—์š”.
๊ตณ์ด ๋‹ค๋ฅธ ๊ณณ์—์„œ ์“ธ ์ผ์ด ์—†๋Š”๋ฐ, ์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ด์œ ๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์ด์ฃ ! ๐Ÿ™‡๐Ÿปโ€โ™‚๏ธ

function outer() {
	function inner() {
    	...
    }
     
    inner();
}

์ฝœ๋ฐฑ ํ•จ์ˆ˜

์ฝœ๋ฐฑํ•จ์ˆ˜ ์ •๋ง ์ค‘์š”ํ•˜์ฃ . ๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์‹ค ๋งค์šฐ ๊ฐ„๋‹จํ•œ ์นœ๊ตฌ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ๋‹ค์‹œ ๋˜ ๋– ์˜ฌ๋ ค ๋ณด์ž๊ตฌ์š”. ํ•จ์ˆ˜๋Š” ๊ฐ’์ด์ฃ ?
๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ํ• ๋‹นํ•˜์ฃ ?

๋”ฐ๋ผ์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ์ธ์ˆ˜๋กœ ์™ธ๋ถ€์—์„œ ์ „๋‹ฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•ด์š”. ๋ฐ”๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ง์ด์ฃ !
์šฐ๋ฆฌ๊ฐ€ ํ‰์†Œ์— ๋ณด๋Š” addEventListener ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ์‰ฌ์›Œ์š” ๐Ÿ˜‰

const onClick = () => {
  console.log('hi');
}

$element.addEventListener('click', onClick)

onClick์ด ์—ฌ๊ธฐ์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ํ•  ๋กœ์ง๋“ค์„ ํ—ฌํผํ•จ์ˆ˜๋กœ ์ถ”์ƒํ™”ํ•ด์„œ ์ „๋‹ฌํ•˜๋‹ˆ๊นŒ, ํ•จ์ˆ˜๊ฐ€ ๊ธฐ๋Šฅํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ์„ฑ์ด ๋”์šฑ ๊ฑฐ๋Œ€ํ•ด์ง„ ๊ฑฐ์—์š”. ์—„์ฒญ๋‚œ ๋งˆ๋ฒ•์ด์ฃ ! โœจ

์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜์˜ ์™ธ๋ถ€์—์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ ๋ฐ›์€ ํ•จ์ˆ˜๋ฅผ ๊ณ ์ฐจ ํ•จ์ˆ˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ด ์นœ๊ตฌ๋„ ์•ž์œผ๋กœ ๋งŽ์ด ๊ดด๋กญํžํ…Œ๋‹ˆ, ์™ธ์›Œ๋‘์ฃ !

์ˆœ์ˆ˜ํ•จ์ˆ˜, ๋น„์ˆœ์ˆ˜ํ•จ์ˆ˜

์–ด๋–ค ๋™์ผํ•œ ์ธ์ž๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š”, ์ฆ‰ ์™ธ๋ถ€ ์ƒํƒœ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์ผ์ •ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ผ ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ์นœ๊ตฌ๋ฅผ ๋น„์ˆœ์ˆ˜ํ•จ์ˆ˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ ๋“ค์œผ์‹ค ๋•Œ๋Š” ์™€๋‹ฟ์ง€ ์•Š์œผ์‹ค ๊ฑฐ์—์š”. ํ•˜์ง€๋งŒ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๊ฐ€์‹ค ๊ฒ๋‹ˆ๋‹ค!

const arr = [1,4,3,2]
console.log(arr.map((a, i) => i + 1)) // [1,2,3,4]
console.log(arr) // [1,4,3,2]

// ๋น„์ˆœ์ˆ˜ํ•จ์ˆ˜
const arr = [1,4,3,2]

arr.sort((a, b) => a - b); 
console.log(arr) // [1,2,3,4]

๋Œ€ํ‘œ์ ์œผ๋กœ map์ด ์ˆœ์ˆ˜ํ•จ์ˆ˜์ด๋ฉฐ, sort๊ฐ€ ๋น„์ˆœ์ˆ˜ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

map์œผ๋กœ ์—ฐ์‚ฐ์ด ๋˜๋ฉด arr ์ž์ฒด๋Š” ๋ณ€ํ•˜์ง€ ์•Š์ฃ ? ์ฆ‰, ์ˆœ์ˆ˜ํ•จ์ˆ˜๋Š” ์™ธ๋ถ€ ์ƒํƒœ์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜์ด๊ธฐ์—, ๋”ฐ๋ผ์„œ ์˜ค์ง ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๊ณ  ๋‚ด๋ถ€์˜ ๋…๋ฆฝ์ ์ธ ํ™˜๊ฒฝ์—์„œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ์ˆœ์ˆ˜ํ•˜๋‹ค๋Š” ๊ฒƒ์ด์ฃ !

๋ฐ˜๋ฉด sort๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๊ณ , arr๋ผ๋Š” ์™ธ๋ถ€์˜ ์ƒํƒœ ๊ฐ’์„ ๋ณ€ํ™”์‹œ์ผฐ์–ด์š”. ๋”ฐ๋ผ์„œ ๋น„์ˆœ์ˆ˜ํ•จ์ˆ˜๋ผ๋Š” ๊ฒ๋‹ˆ๋‹ค.

๋‹น์—ฐํžˆ ์ˆœ์ˆ˜ํ•จ์ˆ˜๊ฐ€ ๋”์šฑ ์ง€ํ–ฅํ•ด์•ผ ํ•  ํ•จ์ˆ˜๊ฒ ์ฃ ? ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ฅผ ์ง€ํ–ฅํ•ด์•ผ ํ•˜๋„๋ก ํ•ฉ์‹œ๋‹ค.
๊ทธ๋ž˜์„œ ๋น„์ˆœ์ˆ˜ํ•จ์ˆ˜์ธ sort๋Š” ๊ฐ€๋” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‚ณ์€ ์‹ค์ˆ˜๋กœ ์ทจ๊ธ‰ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ญ

๐Ÿš€ ๋งˆ์น˜๋ฉฐ

์˜ค... 3์‹œ๊ฐ„์ด ๋‚จ์ง“ ๊ฑธ๋ ธ๋Š”๋ฐ์š”.
์ •๋ง 35์ชฝ ๋ถ„๋Ÿ‰์˜ ์ ์ง€ ์•Š์€ ๋‚ด์šฉ์ด์—ˆ์–ด์š”.

๋‹ค๋งŒ, ์ € ์—ญ์‹œ ์ด๋ฅผ ์ •๋ฆฌํ•˜๋ฉด์„œ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ˆœ์„œ๋ผ๋˜์ง€ ๋””ํ…Œ์ผํ•œ ๋ถ€๋ถ„์—์„œ ๋งŽ์ด ๊นจ๋‹ซ๊ณ  ๊ฐ‘๋‹ˆ๋‹ค.
ํŠนํžˆ ์‹๋ณ„์ž ๋ถ€๋ถ„์€ ์ข€ ๋” ์ €๋ฅผ ๋ฐ˜์„ฑํ•˜๊ฒŒ ๋˜์—ˆ๋˜ ๊ณ„๊ธฐ๋ฅผ ์ฃผ์—ˆ์–ด์š”.

๊ธฐ๋ณธ๊ธฐ๊ฐ€ ์Œ“์ด๋‹ˆ๊นŒ, ์ ์  ๋” ์„ค๋ช…์ด ํ’๋ถ€ํ•ด์ง€๊ณ  ๋‹จ๋‹จํ•ด์ง€๋Š” ๊ธฐ๋ถ„์ด ๋“ค์–ด์„œ ์ข‹์•„์š”. > ๋‹ค๋“ค ์ฆ๊ฑฐ์šด ์ฝ”๋”ฉํ•˜์‹œ๊ธธ ๋ฐ”๋ผ๋ฉฐ. ์ด์ƒ! ๐ŸŒˆ

profile
People are scared of falling to the bottom but born from there. What they've lost is nth. ๐Ÿ˜‰

0๊ฐœ์˜ ๋Œ“๊ธ€