function

  • es3, 5

  • es6

Basic

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์ฒ˜๋Ÿผ ์†์„ฑ(property) ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ผ๊ธ‰ ๊ฐ์ฒด๋‹ค. ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ๊ตฌ๋ณ„๋˜๋Š” ์ ์€ ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. (ํ•จ์ˆ˜๋Š” Function ๊ฐ์ฒด๋‹ค.)

ํ•จ์ˆ˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค. new๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœ ๋˜๋Š” new ์—†์ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. new ํ‚ค์›Œ๋“œ๋กœ ํ˜ธ์ถœ๋˜๋Š” ์ƒ์„ฑ์ž์˜ ๊ฒฝ์šฐ, return๋˜๋Š” ๊ธฐ๋ณธ๊ฐ’(๊ธฐ๋ณธ ๊ฐ’์ด๋ž€ return๋ฌธ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ)์€ ์ž์‹ ์˜ this ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์ด๋‹ค. new ์—†์ด ํ˜ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ, ๊ธฐ๋ณธ ๋ฐ˜ํ™˜ ๊ฐ’์€ undefined๋‹ค.

์ผ๋‹จ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ์‹์„ ์•Œ์•„๋ณด์ž.

  1. ํ•จ์ˆ˜ ์„ ์–ธ์‹

  2. ํ•จ์ˆ˜ ํ‘œํ˜„์‹

  3. Function() ์ƒ์„ฑ์ž ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์ •์˜

1. ํ•จ์ˆ˜ ์„ ์–ธ์‹โ‚ฉโ‚ฉ

JS์—์„œ ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜ ๊ฐ์ฒด ์ฒ˜๋Ÿผ ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰๋œ๋‹ค. ๋•Œ๋ฌธ์— ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹์œผ๋กœ ์ผ๋ฐ˜ ๊ฐ์ฒด ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์„ ์ด์šฉํ•ด ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

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

2. ํ•จ์ˆ˜ ํ‘œํ˜„์‹

JS์—์„œ ํ•จ์ˆ˜๋Š” ํ•˜๋‚˜์˜ ๊ฐ’์ด๋‹ค. (ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰ ๊ฐ์ฒด๋‹ค) ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜๋„ ์ˆซ์ž๋‚˜ ๋ฌธ์ž์—ด์ฒ˜๋Ÿผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•จ์ˆ˜ ๋ณ€์ˆ˜ add๋Š” ํ•จ์ˆ˜์˜ ์ฐธ์กฐ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ๊ทธ๋ž˜์„œ plus ๋ณ€์ˆ˜์—๋„ ๊ทธ ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

C์˜ ํฌ์ธํ„ฐ์ฒ˜๋Ÿผ add์™€ plus๋Š” ๋™์ผํ•œ ์ต๋ช…ํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

3. Function() ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•œ ํ•จ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ

JS์˜ ํ•จ์ˆ˜๋„ Function()์ด๋ผ๋Š” ๊ธฐ๋ณธ ๋‚ด์žฅ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋‹ค. ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ, ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ Function() ์ƒ์„ฑ์ž๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ์—” Function() ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์œ„์˜ ์˜ˆ์ œ๋ฅผ Function() ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ add ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑ ํ•ด๋ณด์ž

ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ๋”๊ธ€๋ผ์Šค ํฌ๋ฝํฌ๋“œ์˜ JS good parts ์—์„œ ํ•จ์ˆ˜ ํ‘œํ˜„์‹๋งŒ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์€ ๊ถŒํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ ์ด์œ  ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ๋•Œ๋ฌธ์ด๋‹ค.

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

ํ•จ์ˆ˜๋„ ๊ฐ์ฒด๋‹ค.

  • ์ผ๋ฐ˜ ๊ฐ์ฒด์ฒ˜๋Ÿผ property๋“ค์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

ํ•จ์ˆ˜๋Š” ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰๋œ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ž๋ฉด, ํ•จ์ˆ˜๋„ ์ผ๋ฐ˜ ๊ฐ์ฒด์ฒ˜๋Ÿผ ์ทจ๊ธ‰๋  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฆฌํ„ฐ๋Ÿด์— ์˜ํ•ด ์ƒ์„ฑ

  • ๋ณ€์ˆ˜๋‚˜ ๋ฐฐ์—ด์˜ ์š”์†Œ, ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ๋“ฑ์— ํ• ๋‹น ๊ฐ€๋Šฅ

  • ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅ

  • ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ๋ฆฌํ„ด ๊ฐ€๋Šฅ

  • ๋™์ ์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ƒ์„ฑ ๋ฐ ํ• ๋‹น ๊ฐ€๋Šฅ

์ด์™€ ๊ฐ™์€ ํŠน์ง• ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰ ๊ฐ์ฒด(First Class)๋‹ค. ์ผ๊ธ‰ ๊ฐ์ฒด๋ผ๋Š” ๋ง์€ ์•ž์—์„œ ๋‚˜์—ดํ•œ ๊ธฐ๋Šฅ์ด ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ์ผ๊ธ‰ ๊ฐ์ฒด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

this

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋˜๋Š” ์ธ์ž๊ฐ’, arguments ๊ฐ์ฒด ๋ฐ this ์ธ์ž๊ฐ€ ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ์•”๋ฌต์ ์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค. this๋Š” ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถ•ใ„น๋˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ this๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ(this ๋ฐ”์ธ๋”ฉ)ํ•œ๋‹ค.

1. ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœํ•  ๋–„ this ๋ฐ”์ธ๋”ฉ

sayHello() ๋ฉ”์„œ๋“œ์—์„œ this.name ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋‹ค. myObj, otherObj๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ๊ฐ๊ฐ ํ˜ธ์ถœ ๋œ๋‹ค. sayName์—์„œ this๋Š” ์ž์‹ ์„ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด์— ๋ฐ”์ธ๋”ฉ ๋œ๋‹ค.

2. ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ this ๋ฐ”์ธ๋”ฉ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ, ํ•ด๋‹น ํ•จ์ˆ˜ ๋‚ด๋ถ€ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋œ this๋Š” ์ „์—ญ ๊ฐ์ฒด์— ๋ฐ”์ธ๋”ฉ๋œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ „์—ญ ๊ฐ์ฒด window์— ๋ฐ”์ธ๋”ฉ๋œ๋‹ค.

์ „์—ญ๋ณ€์ˆ˜ name์„ ์ •์˜ํ•˜๊ณ  ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ๋‹ค. ์ด์ œ ํ•จ์ˆ˜ ํ˜ธ์ถ์‹œ this ๋ฐ”์ธ๋”ฉ์ด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€๋ฅผ ๋ณด์ž.

ํ•จ์ˆ˜ ํ˜ธ์ถœ์—์„œ์˜ this ๋ฐ”์ธ๋”ฉ ํŠน์„ฑ์€ ๋‚ด๋ถ€ ํ•จ์ˆ˜์„ ํ˜ธ์ถœํ–ˆ์„ ๊ฒฝ์šฐ์—๋„ ๊ทธ๋Œ€๋กœ ์ ์šฉ๋œ๋‹ค.

ES6

generator ํ•จ์ˆ˜

function* ์„ ์–ธ์€ generator function์„ ์ •์˜ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” Generator ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์œ„ ์ฝ”๋“œ์—์„œ ๊ธฐ์กด์˜ ํ•จ์ˆ˜์™€ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜์™€์˜ ๋‹ค๋ฅธ ์ ์„ 2๊ฐ€์ง€ ์ •๋„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • function* ํ‚ค์›Œ๋“œ

  • yield ๊ตฌ๋ฌธ์ด ์กด์žฌํ•œ๋‹ค. return๊ณผ ๋น„์Šทํ•˜๋‹ค. ์ฐจ์ด์ ์€ ํ•จ์ˆ˜์—์„œ return์€ ๋‹จ ํ•œ ๋ฒˆ ์‹คํ–‰๋œ๋‹ค. ํ•˜์ง€๋งŒ, ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜์˜ yield๋Š” ์—ฌ๋Ÿฌ๋ฒˆ ์‹คํ–‰๋œ๋‹ค. yield๋Š” ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์˜ ์‹คํ–‰์„ ๋ฉˆ์ท„๋‹ค๊ฐ€ ๋‹ค์Œ์— ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ ๋‹ค.

์ด์ œ ์‹คํ–‰ํ•ด๋ณด์ž.

์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜์˜ ๋™์ž‘ ๋ฐฉ์‹์€ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐ”๋กœ ์‹คํ–‰๋œ๋‹ค. ๊ทธ๋ž˜์„œ return ๋ฌธ์„ ๋งŒ๋‚˜๊ฑฐ๋‚˜ ์˜ˆ์™ธ(exception) ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ์‹คํ–‰๋œ๋‹ค. ์œ„ ์ฝ”๋“œ์—์„œ sayHello('hoil')์€ ์ผ๋ฐ˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ ๊ฐ™์•„ ๋ณด์ธ๋‹ค. ํ•˜์ง€๋งŒ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ์‹œ ์ฆ‰์‹œ ์‹œ๋žณใ…‡๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ๋Œ€์‹  generator ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. (iteratorObj ๋ณ€์ˆ˜) ์ด ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋Š” ์‹คํ–‰์ด ์–ผ์–ด๋ถ™์€ ํ•จ์ˆ˜๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ๋ฒˆ์งธ ์ค„ ๋ฐ”๋กœ ์•ž์—์„œ ์‹คํ–‰์ด ์–ผ์–ด๋ถ™์€ ํ•จ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ œ๋„ˆ๋ ˆ์ดํ„ฐ ๊ฐ์ฒด์˜ .next()๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์‹œ ์Šค์Šค๋กœ ํ•ด๋™๋˜์–ด ๋‹ค์Œ yield๊นŒ์ง€ ์‹คํ–‰๋œ๋‹ค. ๊ทธ๋ž˜์„œ iteratorObj.next() ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ฌธ์ž์—ด ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

.next()์˜ ํ˜ธ์ถœ์—์„œ, ๋งˆ์ง€๋ง‰์— ๋„๋‹ฌ์‹œ done ํ”„๋กœํผํ‹ฐ๊ฐ€ true๊ฐ€ ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ value๋„ undefined๋‹ค.

Arrow Function

์ž์‹ ์˜ this, arguments, superarrow-up-right ๋˜๋Š” new.target์„ ๋ฐ”์ธ๋”ฉ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ํ•ญ์ƒ ์ต๋ช…์ด๋‹ค. ์ด ํ•จ์ˆ˜ ํ‘œํ˜„์€ ๋ฉ”์†Œ๋“œ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ณณ์— ์ ๋‹นํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ์ƒ์„ฑ์ž๋กœ์จ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

๋ฐ”์ธ๋”ฉ ๋˜์ง€ ์•Š๋Š” this

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€, ๋ชจ๋“  ํ•จ์ˆ˜๋Š” ์ž์‹ ์˜ this ๊ฐ’์„ ์ •์˜ํ–ˆ๋‹ค. OOP ์Šคํƒ€์ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ท€์ฐฎ์€ ์ž‘์—…์ด ํ•ญ์ƒ ํ•„์š”ํ–ˆ๋‹ค.

this๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. strict mode์—์„œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ undefined, ํ•จ์ˆ˜๊ฐ€ ๊ฐ์ฒด ๋ฉ”์„œ๋“œ๋กœ์จ ํ˜ธ์ถœ๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด this๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์œ„์™€ ๊ฐ™์ด ํ•˜๋Š” ๋Œ€์‹ ์—, ๋ฐ”์ธ๋”ฉํ•œ ํ•จ์ˆ˜๋Š” ์ ์ ˆํ•œ this ๊ฐ’์ด sayName() ํ•จ์ˆ˜์— ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ์ž์‹ ๋งŒ์˜ this๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. this๋Š” ์ž์‹ ์„ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” ์ปจํ…์ŠคํŠธ์˜ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ฆ‰, this๋Š” ๋ ‰์‹œ์ปฌ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ง„๋‹ค.

๋ฐ”์ธ๋”ฉ ๋˜์ง€ ์•Š์€ arguments

arguments ๊ฐ์ฒด๋ฅผ ๋ฐ”์ธ๋”ฉ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋‹จ์ˆœํžˆ scope๋‚ด ์ด๋ฆ„์— ๋Œ€ํ•œ ์ฐธ์กฐ๋‹ค.

๋ฉ”์†Œ๋“œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

์„œ๋ธŒ๋ฃจํ‹ด(๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜),

ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค 2๊ฐ€์ง€ scope๋ฅผ ๊ฐ€์ง„๋‹ค. ์—ฌ๊ธฐ์„œ lexiocal scope๋Š” ์ฝ”๋“œ๋ฅผ ๋‘˜๋Ÿฌ์‹ธ๊ณ  ์žˆ๋Š” ๊ตฌ๋ฌธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ฆ‰, ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋œ ๊ทธ ๋ฌธ๋งฅ์—์„œ ๊ฒฐ์ •๋œ๋‹ค๋Š” ๋ง์ด๋‹ค. dynamic scope๋Š” ๋Ÿฐํƒ€์ž„ ๋„์ค‘ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋‚˜ ํ˜ธ์ถœ ์ปจํ…์ŠคํŠธ์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค.

Last updated

Was this helpful?