all is well!!

14. JS ํ•จ์ˆ˜ ๋ณธ๋ฌธ

Javascript ๊ณต๋ถ€

14. JS ํ•จ์ˆ˜

tnqlscho 95 2023. 7. 21. 21:35

๐Ÿ‘€  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•จ์ˆ˜?

1. ์ผ๋ จ์˜ ๊ณผ์ •์„ ๋ฌธ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์ฝ”๋“œ ๋ธ”๋ก์œผ๋กœ ๊ฐ์‹ธ์„œ ํ•˜๋‚˜์˜ ์‹คํ–‰ ๋‹จ์œ„๋กœ ์ •์˜ํ•œ ๊ฒƒ.

2. ์ž…๋ ฅ์„ ๋ฐ›์•„์„œ ์ถœ๋ ฅ์„ ๋‚ด๋ณด๋‚ด๋Š” ๊ตฌ์กฐ.

     ๋งค๊ฐœ๋ณ€์ˆ˜ : ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ์ž…๋ ฅ์„ ์ „๋‹ฌ๋ฐ›๋Š” ๋ณ€์ˆ˜

     ์ธ์ˆ˜ : ์ž…๋ ฅ

     ๋ฐ˜ํ™˜๊ฐ’ : ์ถœ๋ ฅ

3. ํ•จ์ˆ˜๋Š” ๊ฐ’์ด๊ณ  ์—ฌ๋Ÿฌ๊ฐœ ์กด์žฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์‹๋ณ„์ž์ธ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค.

4. ํ•จ์ˆ˜ ์ •์˜๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ

5. ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ธ์ˆ˜๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๋ฉด์„œ ํ•จ์ˆ˜์˜ ์‹คํ–‰์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์‹œํ•ด์•ผ ํ•œ๋‹ค.

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

//ํ•จ์ˆ˜ ํ˜ธ์ถœ
var result = add(2,5);

//ํ•จ์ˆ˜ add์— ์ธ์ˆ˜ 2, 5๋ฅผ ์ „๋‹ฌํ•˜๋ฉด์„œ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐ˜ํ™˜๊ฐ’ 7์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๐Ÿ‘€  ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ?

1. ๋ช‡ ๋ฒˆ์ด๋“  ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์–ต์ œํ•˜๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์—ฌ์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธ๋ฆฌํ•ด์ง„๋‹ค.

2. ํ•จ์ˆ˜ ์ด๋ฆ„์€ ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•จ์ˆ˜ ์—ญํ• ์„ ์ž˜ ์„ค๋ช…ํ•˜๋ฉด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ‘€  ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด

1. JS์˜ ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด ํƒ€์ž…์˜ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

var f = function add (x, y){
   return x+y;
}

2. ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์€ ์•„๋ž˜ 4๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

     function ํ‚ค์›Œ๋“œ

     ํ•จ์ˆ˜ ์ด๋ฆ„

     ๋งค๊ฐœ ๋ณ€์ˆ˜ ๋ชฉ๋ก

     ํ•จ์ˆ˜ ๋ชธ์ฒด

3. ๋ฆฌํ„ฐ๋Ÿด์€ ๊ฐ’์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด๋„ ํ‰๊ฐ€๋˜์–ด ๊ฐ์ฒด ๊ฐ’์„ ์ƒ์„ฑํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋‹ค.

4. ์ผ๋ฐ˜ ๊ฐ์ฒด์™€ ๋‹ค๋ฅธ์ ์€ ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ณ  ํ•จ์ˆ˜ ๊ฐ์ฒด๋งŒ์˜ ๊ณ ์œ ํ•œ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๊ณ ์žˆ๋‹ค.

 

๐ŸŸฃ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ

// ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ
function add(x,y){
   return x+y;
}

// ํ•จ์ˆ˜ ์ฐธ์กฐ
console.log(add); // f add(x,y)

// ํ•จ์ˆ˜ ํ˜ธ์ถœ
console.log(add(2,5)); // 7

1. ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด๊ณผ ํ˜•ํƒœ๊ฐ€ ๋™์ผํ•˜๋‹ค.

    ํ•œ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ ์€ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์ƒ๋žตํ•  ์ˆ˜ ์—†๋‹ค.

2. ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ ํ‘œํ˜„์‹์ด ์•„๋‹Œ ๋ฌธ์ด๊ธฐ ๋•Œ๋ฌธ์— console์—์„œ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ์™„๋ฃŒ ๊ฐ’ undefined๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

3. ํ‘œํ˜„์‹์ด ์•„๋‹Œ ํ•จ์ˆ˜ ์„ ์–ธ'๋ฌธ'์€ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์—†๋‹ค.

var add = function add(x, y){
   return x+y;
};

console.log(add(2, 5)); //7

ํ•˜์ง€๋งŒ ์œ„์˜ ์˜ˆ์‹œ๋Š” ๋ณ€์ˆ˜์— ํ•จ์ˆ˜์„ ์–ธ๋ฌธ์ด ํ• ๋‹น๋˜๋Š”๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด๋Š”๋ฐ

์ด๋ ‡๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ด์œ ๋Š” JS์—”์ง„์ด ์ฝ”๋“œ ๋ฌธ๋งฅ์— ๋”ฐ๋ผ

ํ•จ์ˆ˜ ์ด๋ฆ„์ด ์žˆ๋Š” ๊ธฐ๋ช… ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์€ ์ค‘์˜์ ์ธ ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์—

ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์œผ๋กœ ํ•ด์„ํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด ํ‘œํ˜„์‹์œผ๋กœ ํ•ด์„๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ.

1. ๊ธฐ๋ช…ํ•จ์ˆ˜(์ด๋ฆ„ ์žˆ๋Š” ํ•จ์ˆ˜) ๋‹จ๋… ์‚ฌ์šฉ
function foo(){
   console.log('foo');
}

foo() // foo

2. ๊ทธ๋ฃน ์—ฐ์‚ฐ์ž()๋‚ด์— ์žˆ๋Š” ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด ํ‘œํ˜„์‹์œผ๋กœ ํ•ด์„.
(function bar(){console.log('bar');});
bar(); // bar is not defined

4. ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ๋œ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด(foo)์€ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์œผ๋กœ ํ•ด์„ํ•œ๋‹ค.

5. ๊ทธ๋ฃน ์—ฐ์‚ฐ์ž()๋‚ด์— ์žˆ๋Š” ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด(bar)์€ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด ํ‘œํ˜„์‹์œผ๋กœ ํ•ด์„ํ•œ๋‹ค.

    ๊ทธ๋ž˜์„œ ํ‘œํ˜„์‹์ด ์•„๋‹Œ ๋ฌธ์€ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

6. ์œ„์˜ ์˜ˆ์‹œ์—์„œ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด ํ‘œํ˜„์‹์œผ๋กœ ์ƒ์„ฑ๋œ bar์€ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค.

๊ทธ ์ด์œ ๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์€ ํ•จ์ˆ˜ ๋ชธ์ฒด ๋‚ด์—์„œ๋งŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์‹๋ณ„์ž๋‹ค.

๊ทธ๋ž˜์„œ ํ•จ์ˆ˜ ๋ชธ์ฒด ์™ธ๋ถ€์—์„œ๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—

ํ•จ์ˆ˜ ๋ชธ์ฒด ์™ธ๋ถ€์—์„œ๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค.

 

7. ์œ„์˜ ์˜ˆ์‹œ์—์„œ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ foo๋Š” ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” foo๋Š” JS์—”์ง„์ด ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑํ•œ ์‹๋ณ„์ž์ด๊ธฐ ๋•Œ๋ฌธ.

JS์—”์ง„์€ ์ƒ์„ฑ๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์˜ ์‹๋ณ„์ž๋ฅผ ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ 

๊ฑฐ๊ธฐ์— ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

8. ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์œผ๋กœ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹๋ณ„์ž๋กœ ํ˜ธ์ถœํ•œ๋‹ค.

var add(js์—”์ง„์ด ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑํ•œ ์‹๋ณ„์ž) = function add(x, y){
   return x+y;
};

console.log(add(2, 5)); //7

๊ทธ๋ž˜์„œ ์œ„์˜ ์˜ˆ์‹œ๋Š” JS์—”์ง„์ด ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑํ•œ add ์‹๋ณ„์ž๋กœ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์œผ๋กœ ์ƒ์„ฑํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

9. JS ์—”์ง„์€ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์„ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š”๊ฒƒ.

 

๐ŸŸฃ ํ•จ์ˆ˜ ํ‘œํ˜„์‹

1. JS ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰ ๊ฐ์ฒด๋กœ ํ•จ์ˆ˜๋ฅผ ๊ฐ’์ฒ˜๋Ÿผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

   ์ผ๊ธ‰๊ฐ์ฒด? : ๊ฐ’์˜ ์„ฑ์งˆ(๋ณ€์ˆ˜์— ํ• ๋‹น, ํ”„๋กœํผํ‹ฐ ๊ฐ’, ๋ฐฐ์—ด์˜ ์š”์†Œ ๋“ฑ)์„ ๊ฐ–๋Š” ๊ฐ์ฒด

2. ๊ทธ๋ž˜์„œ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑํ•œ ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์ด ํ•จ์ˆ˜ ํ‘œํ˜„์‹.

3. ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์˜ ํ•จ์ˆ˜ ์ด๋ฆ„์€ ์ƒ๋žต ๊ฐ€๋Šฅํ•œ ์ต๋ช… ํ•จ์ˆ˜์ด๊ณ  ๋ณดํ†ต์€ ์ƒ๋žตํ•œ๋‹ค.

// ํ•จ์ˆ˜์— ์ด๋ฆ„(foo)์ด ์žˆ๋Š” ๊ธฐ๋ช… ํ•จ์ˆ˜ ํ‘œํ˜„์‹.
// ์ƒ๋žต ๊ฐ€๋Šฅ.
var add = function foo(x, y){
   return x+y;
};

// JS์—”์ง„์ด ์•”๋ฌต์ ์œผ๋กœ ๋งŒ๋“ค์–ด๋‚ธ add ์‹๋ณ„์ž๋กœ ํ•ด๋‹น ํ•จ์ˆ˜ํ˜ธ์ถœ
console.log(add(2, 5)); //7

// ํ•จ์ˆ˜ ์ด๋ฆ„์€ ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค.
console.log(foo(2, 5)); //foo is not defind

4. ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ ํ‘œํ˜„์‹์ด ์•„๋‹Œ ๋ฌธ์ด๊ณ  ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ํ‘œํ˜„์‹์ธ ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ค‘์š”ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 

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

// ํ•จ์ˆ˜ ์ฐธ์กฐ
console.dir(add); // f add(x, y)
console.dir(sub); // undefined

// ํ•จ์ˆ˜ ํ˜ธ์ถœ
console.log(add(2,5)); // 7
console.log(sub(2,5)); // sub is not a function

// ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ
function add(x,y){
   return x+y;
}

// ํ•จ์ˆ˜ ํ‘œํ˜„์‹
var add = function (x,y){
   return x-y;
}

1. ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์œผ๋กœ ์ •์˜ํ•œ ํ•จ์ˆ˜๋Š” ์ด์ „์— ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋ฉด ๋Ÿฐํƒ€์ž„ ์ด์ „์— ํ•จ์ˆ˜ ๊ฐ์ฒด๊ฐ€ ๋จผ์ € ์ƒ์„ฑ๋˜๊ณ 

JS์—”์ง„์€ ํ•จ์ˆ˜ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์˜ ์‹๋ณ„์ž๋ฅผ ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๋Š” ํ˜ธ์ด์ŠคํŒ… ๋•Œ๋ฌธ.

2. ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์€ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

var ๋ณ€์ˆ˜๋Š” undefined๋กœ ์ดˆ๊ธฐํ™”๋˜๊ณ  ํ•จ์ˆ˜์˜ ์•”๋ฌต์  ์ƒ์„ฑ ์‹๋ณ„์ž๋Š” ํ•จ์ˆ˜ ๊ฐ์ฒด๋กœ ์ดˆ๊ธฐํ™” ๋œ๋‹ค.

3. ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜์— ํ• ๋‹น๋˜๋Š”  ๊ฐ’์ด ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์ธ ๋ฌธ์ด๋‹ค.

4. ๋ณ€์ˆ˜ ํ• ๋‹น๋ฌธ์˜ ๊ฐ’์€ ํ• ๋‹น๋ฌธ์ด ์‹คํ–‰๋˜๋Š” ์‹œ์ ์ธ ๋Ÿฐํƒ€์ž„์— ํ‰๊ฐ€๋˜์–ด์„œ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์˜ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด๋„

ํ• ๋‹น๋ฌธ์ด ์‹คํ–‰๋˜๋Š” ์‹œ์ ์— ํ‰๊ฐ€๋˜์–ด ํ•จ์ˆ˜ ๊ฐ์ฒด๊ฐ€ ๋œ๋‹ค.

5. ๊ทธ๋ž˜์„œ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์— ์ฐธ์กฐํ•˜๋ฉด undefined๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๊ฒŒ ๋˜๊ธฐ๋•Œ๋ฌธ์—

ํƒ€์ž…์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

6. ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์€ ๋‹น์—ฐํ•œ ๊ทœ์น™์„ ๋ฌด์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.

 

๐ŸŸฃ Function ์ƒ์„ฑ์ž ํ•จ์ˆ˜

1. JS ๋นŒํŠธ์ธ function ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก๊ณผ ํ•จ์ˆ˜๋ชธ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌํ•˜๋ฉด์„œ

new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ฒŒ ํ˜ธ์ถœํ•˜๋ฉด ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (new ์•ˆ์จ๋„ ๊ฒฐ๊ณผ ๋™์ผ)

var add = new function('x', 'y', 'return x+y');
console.log(add(2,5)); // 7

2. ํด๋กœ์ €๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์ด๋‚˜ ํ•จ์ˆ˜ ํ‘œํ˜„์‹๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

function ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ์กด์žฌ๋งŒ ์•Œ๊ณ  ์‚ฌ์šฉํ•˜๋Š”๊ฑด ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

๐ŸŸฃ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

1. ES6์— ๋„์ž…๋˜์—ˆ๊ณ  function ํ‚ค์›Œ๋“œ๋ฅผ ์ƒ๋žตํ•˜๋Š” ๊ฐ„๋žตํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ํ•ญ์ƒ ์ต๋ช… ํ•จ์ˆ˜๋กœ ์ •์˜ํ•œ๋‹ค.

const add = (x, y) => x + y;
console.log(add(2,5)); //7

3. ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

4. ๊ธฐ์กด ํ•จ์ˆ˜์™€ this ๋ฐ”์ธ๋”ฉ์ด ๋‹ค๋ฅด๋‹ค.

5. ํ”„๋กœํผํ‹ฐ๊ฐ€ ์—†๊ณ  arguments ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

๐Ÿ‘€  ํ•จ์ˆ˜ ํ˜ธ์ถœ

1. ํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹๋ณ„์ž์™€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์—ฐ์‚ฐ์ž๋กœ ํ˜ธ์ถœํ•œ๋‹ค.

2. ํ˜ธ์ถœ ์—ฐ์‚ฐ์ž ๋‚ด์—๋Š” 0๊ฐœ ์ด์ƒ์˜ ์ธ์ˆ˜๋ฅผ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๋‚˜์—ดํ•œ๋‹ค.

3. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ˜„์žฌ์˜ ์‹คํ–‰ ํ๋ฆ„์„ ์ค‘๋‹จํ•˜๊ณ  ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜๋กœ ์‹คํ–‰ํ๋ฆ„์„ ์˜ฎ๊ธด๋‹ค.

4. ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ธ์ˆ˜๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ํ• ๋‹น๋˜๊ณ  ํ•จ์ˆ˜ ๋ชธ์ฒด์˜ ๋ฌธ๋“ค์ด ์‹คํ–‰๋˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

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

1. ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐ’์„ ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ์ „๋‹ฌํ•  ํ•„์š”๊ฐ€ ์žˆ์„๋•Œ

๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

2. ์ธ์ˆ˜๋Š” ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์‹.

3. ์ธ์ˆ˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ• ๋•Œ ์ง€์ •ํ•˜๊ณ  ๊ฐœ์ˆ˜์™€ ํƒ€์ž…์— ์ œํ•œ์ด ์—†๋‹ค.

4. ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ์„ ์–ธํ•˜๊ณ  ํ•จ์ˆ˜ ๋ชธ์ฒด ๋‚ด๋ถ€์—์„œ ๋ณ€์ˆ˜์™€ ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰๋œ๋‹ค.

5. ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€๋‹ค. ์™ธ๋ถ€์—์„œ๋Š” ์ฐธ์กฐx

6. ํ•จ์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ์ธ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ์ฒดํฌํ•˜์ง€ ์•Š๊ณ  ์ธ์ˆ˜๊ฐ€ ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์€ undefined๋‹ค.

7. ์•„๋ž˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋งค๊ฐœ๋ณ€์ˆ˜ y๊ฐ’์ด ์—†์œผ๋ฉด undefined๋กœ ์ดˆ๊ธฐํ™”๋œ ์ƒํƒœ ๊ทธ๋Œ€๋กœ์ด๊ณ 

ํ•จ์ˆ˜ ๋ชธ์ฒด์˜ ๋ฌธ x+y๋Š” 2+undefined์—ฌ์„œ NaN์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

function add(x,y){
   return x+y;
}

console.log(add(2)); // NaN

8. ๋งค๊ฐœ๋ณ€์ˆ˜๋ณด๋‹ค ๋งŽ์€ ์ธ์ˆ˜๋Š” ๋ฌด์‹œ๋œ๋‹ค.

function add(x,y){
   return x+y;
}

console.log(add(2, 5, 10)); // 7

9. ์ดˆ๊ณผ๋œ ์ธ์ˆ˜๋Š” ๋ฒ„๋ ค์ง€๋Š”๊ฒƒ์€ ์•„๋‹ˆ๊ณ  arguments ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์— ๋ณด๊ด€๋œ๋‹ค.

10. arguments ๊ฐ์ฒด๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ •ํ•  ์ˆ˜ ์—†๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ• ๋•Œ ์œ ์šฉํ•˜๋‹ค.

 

๐ŸŸฃ ์ธ์ˆ˜ ํ™•์ธ

function add(x,y){
   return x+y;
}

console.log(add(2)); // NaN
console.log(add('a','b')); // 'ab'

1. JS ๋ฌธ๋ฒ•์— ๋ฌธ์ œ๊ฐ€ ์—†๊ธฐ๋•Œ๋ฌธ์— ์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ์‹คํ–‰๋œ๋‹ค.

2. ๊ทธ๋ž˜์„œ ์ ์ ˆํ•œ ์ธ์ˆ˜๊ฐ€ ์ „๋‹ฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค.

3. ๊ทธ๋Ÿฐ๋ฐ ์ธ์ˆ˜ ํ™•์ธ์„ ํ•ด๋„ ๋ถ€์ ์ ˆํ•œ ํ˜ธ์ถœ์€ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•  ์ˆ˜ ์—†๊ณ  ์—๋Ÿฌ๋Š” ๋Ÿฐํƒ€์ž„์— ๋‚˜๊ธฐ๋•Œ๋ฌธ์— ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์“ฐ๋ฉด ์ข‹๋‹ค.

 

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

1. ECMAScript ์‚ฌ์–‘์—๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์ œํ•œํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋ž˜์„œ ๋งŽ์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ „๋‹ฌํ•ด์•ผ ํ•  ์ธ์ˆ˜์˜ ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š”๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ์‹ค์ˆ˜๋ฅผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

3. ๊ทธ๋ž˜์„œ ์ด์ƒ์ ์ธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” 0๊ฐœ์ด๊ณ  ์ ์„์ˆ˜๋ก ์ข‹๋‹ค. (3๊ฐœ ์ด์ƒ์€ ๋„˜์ง€์•Š๋Š”๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.)

4. ์ด์ƒ์ ์ธ ํ•จ์ˆ˜๋Š” ํ•œ๊ฐ€์ง€ ์ผ๋งŒ ํ•˜๊ณ  ๊ฐ€๊ธ‰์  ์ž‘๊ฒŒ ๋งŒ๋“œ๋Š”๊ฒŒ ์ข‹๋‹ค.

5. 3๊ฐœ ์ด์ƒ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋ฉด ํ•˜๋‚˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๊ฐ์ฒด๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.

 

๐ŸŸฃ ๋ฐ˜ํ™˜๋ฌธ

1. return ํ‚ค์›Œ๋“œ์™€ ํ‘œํ˜„์‹์œผ๋กœ ์ด๋ค„์ง„ ๋ฐ˜ํ™˜๋ฌธ์„ ์‚ฌ์šฉํ•ด ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ•จ์ˆ˜ ์™ธ๋ถ€๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ํ•จ์ˆ˜๋Š” return ํ‚ค์›Œ๋“œ๋กœ JS์˜ ๋ชจ๋“  ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ํ‘œํ˜„์‹์œผ๋กœ return ํ‚ค์›Œ๋“œ๊ฐ€ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค.

4. ๋ฐ˜ํ™˜๋ฌธ์€ ํ•จ์ˆ˜ ์‹คํ–‰์„ ์ค‘๋‹จํ•˜๊ณ  ๋ชธ์ฒด๋ฅผ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ์—ญํ• ๊ณผ

return ํ‚ค์›Œ๋“œ ๋’ค์— ์˜ค๋Š” ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๋‘๊ฐ€์ง€ ์—ญํ• ์„ ํ•œ๋‹ค.

5. ๋ฐ˜ํ™˜๋ฌธ์€ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋•Œ ํ•จ์ˆ˜๋Š” ์•”๋ฌต์ ์œผ๋กœ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

6. return ํ‚ค์›Œ๋“œ์™€ ๋ฐ˜ํ™˜๊ฐ’ ์‚ฌ์ด์— ์ค„๋ฐ”๊ฟˆ์ด ์žˆ์œผ๋ฉด ์„ธ๋ฏธ์ฝœ๋ก  ์ž๋™ ์‚ฝ์ž… ๊ธฐ๋Šฅ์œผ๋กœ ๋ฐ˜ํ™˜๊ฐ’์ด ๋ฌด์‹œ๋˜์„œ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

7. ๋ฐ˜ํ™˜๋ฌธ์€ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. ์ „์—ญ์—์„œ ์“ฐ๋ฉด ๋ฌธ๋ฒ• ์—๋Ÿฌ๊ฐ€ ๋‚˜๋‹ˆ ์ฃผ์˜!

 

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

1. ์›์‹œ ๊ฐ’์€ ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ, ๊ฐ์ฒด๋Š” ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋„ ํ•จ์ˆ˜ ๋ชธ์ฒด ๋‚ด๋ถ€์—์„œ ๋ณ€์ˆ˜์™€ ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰๋˜์„œ

ํƒ€์ž…์— ๋”ฐ๋ผ ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ๊ณผ ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹์„ ๋”ฐ๋ฅธ๋‹ค.

2. changeVal ํ•จ์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋ฐ›์€ ์›์‹œ ํƒ€์ž… ์ธ์ˆ˜์™€ ๊ฐ์ฒด ํƒ€์ž… ์ธ์ˆ˜๋ฅผ ํ•จ์ˆ˜ ๋ชธ์ฒด์—์„œ ๋ณ€๊ฒฝํ•œ๋‹ค.

์›์‹œ ํƒ€์ž…์€ ์ง์ ‘ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ธฐ๋•Œ๋ฌธ์— ์žฌํ• ๋‹น์„ ํ†ตํ•ด ์ƒˆ๋กœ์› ์›์‹œ๊ฐ’์œผ๋กœ ๊ต์ฒดํ•˜๊ณ 

๊ฐ์ฒด ํƒ€์ž…์€ ์ง์ ‘ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌํ• ๋‹น ์—†์ด ์ง์ ‘ ํ• ๋‹น๋œ ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ–ˆ๋‹ค.

 

์ด๋•Œ ์›์‹œ ํƒ€์ž… ์ธ์ˆ˜๋Š” ์žฌํ• ๋‹น ๋•๋ถ„์— ์›๋ณธ์€ ํ›ผ์†๋˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋ž˜์„œ ์–ด๋–ค ๋ถ€์ˆ˜ ํšจ๊ณผ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

ํ•˜์ง€๋งŒ ๊ฐ์ฒด ํƒ€์ž… ์ธ์ˆ˜๋Š” ์ฐธ์กฐ ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ๋ชธ์ฒด์—์„œ

์ฐธ์กฐ ๊ฐ’์„ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์›๋ณธ์€ ํ›ผ์†๋˜๋Š” ๋ถ€์ˆ˜ํšจ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

๊ฐ์ฒด ํƒ€์ž…์ฒ˜๋Ÿผ ํ•จ์ˆ˜๊ฐ€ ์™ธ๋ถ€ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์ถ”์ ํ•˜๊ธฐ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋…์„ฑ์„ ํ•ด์นœ๋‹ค.

๊ทธ๋ž˜์„œ ๊ฐ์ฒด๋ฅผ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ†ตํ•ด ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

 

Comments