๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

javascript/ํด๋ฆฐ์ฝ”๋“œ

[JS] ํด๋ฆฐ์ฝ”๋“œ - ๋ณ€์ˆ˜

728x90

let

const - ๋ธ”๋ก ๋‹จ์œ„ ์Šค์ฝ”ํ”„, TDZ => ์•ˆ์ „ํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ

 

var - ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„

var๋Š” ์žฌํ• ๋‹น , ์žฌ์„ ์–ธ(์ค‘๋ณต์„ ์–ธ)์ด ๊ฐ€๋Šฅํ•˜๋‹ค. => ์œ„ํ—˜ํ•˜๋‹ค.

let, const๋Š” ์žฌ์„ ์–ธ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 



let์€ ์žฌํ• ๋‹น์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ
const๋Š” ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

 

<- ํ•ด๋‹น์ฝ”๋“œ์—์„œ

์ „์—ญ ๊ณต๊ฐ„์— ์žˆ๋Š” ์Šค์ฝ”ํ”„๊นŒ์ง€

์˜ค์—ผ์ด ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์œ  :  if๋ฌธ์ด๊ธฐ ๋•Œ๋ฌธ์—!

var๋Š” ํ•จ์ˆ˜๋‹จ์œ„

if๋ฌธ์€ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ๋•Œ๋ฌธ์— ์˜ค์—ผ์ด ๋œ๋‹ค.

=> ๋ธ”๋ก ๋‹จ์œ„๋กœ ๋ฐ”๊พธ์–ด ์˜ค์—ผ์„ ๋ฐฉ์ง€! ์•ˆ์ „ํ•œ ์ฝ”๋“œ์ž‘์„ฑ

 

 

 

 

๊ฐ์ฒด๋ฅผ ์žฌํ• ๋‹นํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
๊ฐ์ฒด๋ฅผ ์žฌํ• ๋‹น ํ•˜์ง€ ์•Š์•„๋„ ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐฐ์—ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€!

=> const๋Š” ์žฌํ• ๋‹น๋งŒ ๊ธˆ์ง€๋œ๋‹ค. ๋ณธ์—ฐ์˜ ๊ฐ์ฒด, ๋ฐฐ์—ด๊ฐ™์€ ๋ ˆํผ๋Ÿฐ์Šค ๊ฐ์ฒด๋“ค์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค!

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์„ฑ!

1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํŒŒ์ผ์„ ๋‚˜๋ˆˆ๋‹ค๊ณ  ํ•ด์„œ ์Šค์ฝ”ํ”„๊ฐ€ ๋‚˜๋‰˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2. ์˜ˆ์•ฝ์–ด๋ฅผ ์žฌ์„ ์–ธํ•ด๋„ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ € ์›นapi์ด๊ธฐ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ฝ”๋”ฉ์„ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋‹จ๊ณ„์—์„œ๋Š” ๊ฐœ์ž…์ด ์—†๋‹ค.

3. for๋ฌธ์—์„œ var๋ฅผ ์‚ฌ์šฉํ• ๋•Œ, ์ž„์‹œ์ ์ธ ๋ณ€์ˆ˜์ด์ง€๋งŒ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋œ๋‹ค. (var ํ•จ์ˆ˜๋‹จ์œ„์ด๊ธฐ๋•Œ๋ฌธ..)

 

 

Q. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์ „์—ญ ๊ณต๊ฐ„์™œ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋ ๊นŒ? ์™œ ์ตœ์†Œํ™”ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ๋ ๊นŒ?

์ด์œ  : 

์ „์—ญ๊ณต๊ฐ„(์ตœ์ƒ์œ„๊ณต๊ฐ„) : global(node.js), window(๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ)๋กœ ๋‚˜๋ˆ ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

A. ์–ด๋””์„œ๋‚˜ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์Šค์ฝ”ํ”„ ๋ถ„๋ฆฌ๊ฐ€ ์œ„ํ—˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š”

1. ์ „์—ญ๋ณ€์ˆ˜ x , ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ 

2. window, global์„ ์กฐ์ž‘ํ•˜์ง€ ์•Š์œผ๋ฉฐ

3. const, let์„ ์‚ฌ์šฉํ•˜๊ณ 

4. IIFE, Module, Closure๋ฅผ ํ†ตํ•ด ์Šค์ฝ”ํ”„๋ฅผ ๋‚˜๋ˆ„๊ธฐ

 

์ž„์‹œ๋ณ€์ˆ˜

: scope ์•ˆ์—์„œ ์ „์—ญ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ํ™œ์šฉ๋˜๋Š” ๋ณ€์ˆ˜ -> ์ˆ˜์ •๋  ์œ„ํ—˜์ด ์žˆ์Œ

 

์ž˜๋ชป๋œ ์˜ˆ : 
์˜ฌ๋ฐ”๋ฅธ ์˜ˆ:

์ž„์‹œ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ๋‚˜์„œ ์ž„์‹œ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด์„œ CRUD ์œ ํ˜น์— ๋น ์ง€๊ฒŒ ๋œ๋‹ค.

์œ„์˜ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ž„์‹œ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

 

 

๋งŒ์•ฝ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ํ•„์š”ํ• ๋•Œ(๊ธฐํš, ๋งˆ์ผ€ํŒ… ์ˆ˜์ • ๋“ฑ)๊ฐ€ ์žˆ๋‹ค.

์ด๋•Œ A. ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑํ•˜๋ƒ? B. ํ•จ์ˆ˜๋ฅผ ์œ ์ง€๋ณด์ˆ˜ํ•˜๋ƒ? ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

์•„๋ž˜ ์ฝ”๋“œ๋Š” ์‹œ๊ฐ„๊ณผ ํ•จ๊ป˜ ๋ฌธ์ž์—ด '์›”, ์ผ, ์‹œ' ๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก ์—…๋ฐ์ดํŠธํ•œ ์ฝ”๋“œ์ด๋‹ค.

๊ตฌ๋ฒ„์ „:
์‹ ๋ฒ„์ „:


์ž„์‹œ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ด์•ผํ•˜๋Š” ์ด์œ 

1. ๋ช…๋ นํ˜•์œผ๋กœ ๊ฐ€๋“ํ•œ ๋กœ์ง
2. ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ์ž˜๋ชป๋ฌ๋Š”์ง€ ์•Œ๊ธฐ ์–ด๋ ค์›€(๋””๋ฒ„๊น…์ด ํž˜๋“ฆ)
3. ์ถ”๊ฐ€์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ์œ ํ˜นํ•จ - "ํ•จ์ˆ˜๋Š” ํ•˜๋‚˜์˜ ์ผ๋งŒ!" ๊ทœ์น™์— ์œ„๋ฐฐ๋จ.

=> ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง€๊ธฐ๋•Œ๋ฌธ!
ํ•ด๊ฒฐ์ฑ… 

1. ํ•จ์ˆ˜๋ฅผ ๋‚˜๋ˆ„๊ธฐ - "ํ•จ์ˆ˜๋Š” ํ•˜๋‚˜์˜ ์ผ๋งŒ!"
2. ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ
3. ๊ณ ์ฐจํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ(map, filter, reduce)
๊ธฐ์กด
ํด๋ฆฐ์ฝ”๋“œ

 

 

ํ˜ธ์ด์ŠคํŒ…์„ ์ฃผ์˜ํ•˜์ž!

<- ์˜†์˜ ์ฝ”๋“œ๋ฅผ ํ’€์–ด์„œ ์“ด ๊ฒƒ



var๋Š” ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„!
์„ ์–ธ์ „์— ๋ฏธ๋ฆฌ ํ• ๋‹น์„ ํ–ˆ๊ธฐ๋•Œ๋ฌธ์— 'undefined' ์ถœ๋ ฅ

 

๋ณ€์ˆ˜ ๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜๋„ ํ˜ธ์ด์ŠคํŒ…๋œ๋‹ค!

var sum;

console.log(sum) // 3
console.log(typeof sum) // function

function sum(){
	return 1+2;
}

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— var๋ณด๋‹จ const๋กœ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค.

ํ•จ์ˆ˜ํ‘œํ˜„์‹ : ์ต๋ช…ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ

ex ) const sum = function (){

ใ€€ใ€€ใ€€return 1+2;

}

 

ํ˜ธ์ด์ŠคํŒ… : ๋Ÿฐํƒ€์ž„์‹œ ์„ ์–ธ์ด ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง.

๊ทธ๋ ‡๊ธฐ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ ์˜ˆ์ธกํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ(๋ชฝํ‚คํŒจ์น˜)๋กœ ์–ด๋ ค์›€์„ ๊ฒช๋Š”๋‹ค.

ํ•ด๊ฒฐ๋ฐฉ๋ฒ• : let, const๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์ž, ๋˜ํ•œ ํ•จ์ˆ˜๋„ ํ˜ธ์ด์ŠคํŒ…์ด ๋˜๊ธฐ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ํ‘œํ˜„์‹์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค!

728x90