๐Ÿ“ŒLanguage/JavaScript

TIL) JS ๊ธฐ์ดˆ, let vs const vs var, ํ•จ์ˆ˜ ์„ ์–ธ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•, ์›์‹œํ˜•, ๊ฐ์ฒดํ˜•, undefined ์™€ null์˜ ์ฐจ์ด

hellohailie 2022. 4. 26. 21:15
๋ฐ˜์‘ํ˜•

 

<๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•>
let ํ‚ค์›Œ๋“œ์™€ const ํ‚ค์›Œ๋“œ์˜ ์ฐจ์ด

 

const - always 

let - sometimes

var - never

 

const ์žฌ์„ ์–ธ ๊ธˆ์ง€, ์žฌํ• ๋‹น ๊ธˆ์ง€

let ์žฌ์„ ์–ธ ๊ธˆ์ง€, ์žฌํ• ๋‹น ๊ฐ€๋Šฅ
var ์žฌ์„ ์–ธ ๊ฐ€๋Šฅ, ์žฌํ• ๋‹น ๊ฐ€๋Šฅ

 

const a = b;
const a = c;
//์žฌ์„ ์–ธ ๊ธˆ์ง€

const a = b;
a = c;
//์žฌํ• ๋‹น ๊ธˆ์ง€


let a = b;
let a = c;
//์žฌ์„ ์–ธ ๊ธˆ์ง€

let a = b;
a = c;
//์žฌํ• ๋‹น์€ ๊ฐ€๋Šฅ

var a = b;
var a = c;
a = d;
//์žฌ์„ ์–ธ, ์žฌํ• ๋‹น ๊ฐ€๋Šฅ

 


ํ•จ์ˆ˜ ์„ ์–ธ ๋ฐฉ๋ฒ•

 

ํ•จ์ˆ˜ ์„ ์–ธ์‹ => ํ˜ธ์ด์ŠคํŒ…์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค. - ์„ ์–ธ ์ „์— ํ˜ธ์ถœ๋˜๋„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘!

(ํ˜ธ์ด์ŠคํŒ…: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์ง•์œผ๋กœ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•ด์„ํ•  ๋•Œ ๋งจ ์œ„๋กœ ๋Œ์–ด ์˜ฌ๋ ค์ง„๋‹ค. )

 

function ํ•จ์ˆ˜๋ช… () {
 ๊ตฌํ˜„ํ•  ๋กœ์ง
};

ex)

function getQuadrangleArea (width, height) {
 return quadrangle = width * height;
};


console.log(getQuadrangleArea (3,4)); // 12 ์ถœ๋ ฅ๋œ๋‹ค

 

 

ํ•จ์ˆ˜ ํ‘œํ˜„์‹ =>ํ˜ธ์ด์ŠคํŒ…์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. - ์„ ์–ธ ์ „์— ํ˜ธ์ถœ๋˜๋ฉด ์—๋Ÿฌ!

(ํด๋กœ์ ธ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. - ๋‚ด๋ถ€ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์ˆœ๊ฐ„์— ์ €์žฅ๋œ ์™ธ๋ถ€ํ•จ์ˆ˜ ์ฐธ์กฐ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ. **์ถ”๊ฐ€๊ณต๋ถ€ ํ•„์š”

์ฝœ๋ฐฑ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. - ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ž(parameter)๋กœ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค. ) ** ์ถ”๊ฐ€๊ณต๋ถ€ ํ•„์š”

 

const ํ•จ์ˆ˜๋ช… = function () {
 ๊ตฌํ˜„ ๋กœ์ง
};

ex)

const getQuadrangleArea = function (width, height) {
 return quadrangle = width * height;
};

console.log(getQuadrangleArea(3,4)); // 12 ์ถœ๋ ฅ

 

 

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ => ํ•จ์ˆ˜์˜ ๋ณธ๋ฌธ(body)์— return๋ฌธ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ, return๊ณผ {}์ƒ๋žตํ•ด์„œ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์†Œ๊ด„ํ˜ธ๋Š” ์‚ฌ์šฉ๊ฐ€๋Šฅ. (๋‘˜์ด ์„ธํŠธ)

 

const ํ•จ์ˆ˜๋ช… = (parameter) => {
 ๊ตฌํ˜„ ํ•จ์ˆ˜;
};

ex)

const getQuadrangleArea = (width, height) => {
 return quadrangle = width * height;
};

console.log(getQuadrangleArea(3,4)); // 12 ์ถœ๋ ฅ

 

 


 

JS์˜ ์›์‹œ, ๊ฐ์ฒด ํƒ€์ž…

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํƒ€์ž…์€ ์ˆซ์ž, ๋ฌธ์ž์—ด, boolean, undefined, null, symbol, ๊ฐ์ฒด ํƒ€์ž… 7๊ฐ€์ง€๋‹ค.

 

๊ณต์‹์ ์œผ๋กœ ํ•จ์ˆ˜ํ˜•์ด๋ผ๋Š” ํƒ€์ž…์€ ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ํ•จ์ˆ˜๋Š” ๊ฐ์ฒดํ˜•์— ์†ํ•œ๋‹ค. ํ•˜์ง€๋งŒ typeof ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ• ๋•Œ์—๋Š” function ์ด๋ผ๊ณ  ์ถœ๋ ฅ ํ•ด์ค€๋‹ค. 

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํƒ€์ž…์€ ์›์‹œ ์ž๋ฃŒํ˜•์™€ ์ฐธ์กฐ ์ž๋ฃŒํ˜•(Object)๋กœ ๋‚˜๋‰œ๋‹ค.

 

์›์‹œ ์ž๋ฃŒํ˜• = string, number, bigint, boolean, symbol, undefined, null

์ฐธ์กฐ(๊ฐ์ฒด) ์ž๋ฃŒํ˜•(Object) = ๊ฐ์ฒด, ๋ฐฐ์—ด, ํ•จ์ˆ˜

 

์ฐจ์ด์ 

 

1. ์›์‹œ ํƒ€์ž…์˜ ๊ฐ’, ์ฆ‰ ์›์‹œ ๊ฐ’์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’์ด๋‹ค.

๊ฐ์ฒด(์ฐธ์กฐ) ํƒ€์ž…์˜ ๊ฐ’, ์ฆ‰ ๊ฐ์ฒด๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๊ฐ’์ด๋‹ค. 

 

2. ์›์‹œ ๊ฐ’์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ๋ณ€์ˆ˜ (ํ™•๋ณด๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„)์—๋Š” ์‹ค์ œ ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค.

์ด์— ๋น„ํ•ด ๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ๋ณ€์ˆ˜ (ํ™•๋ณด๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„)์—๋Š” ์ฐธ์กฐ ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค. 

 

3. ์›์‹œ ๊ฐ’์„ ๊ฐ–๋Š” ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ์›๋ณธ์˜ ์›์‹œ ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค. (๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ)

๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ์›๋ณธ์˜ ์ฐธ์กฐ ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค. (์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ)

 

 


 

undefined ์™€ null์˜ ์ฐจ์ด

 

undefined ์™€ null๋Š” ๋‘˜ ๋‹ค ๋ณ€์ˆ˜์— ๊ฐ’์ด ์—†์Œ์„ ๋œปํ•œ๋‹ค. 

๋‹ค๋งŒ, undefined ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ๋งŒ ํ•˜๊ณ  ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ์ž๋™์ ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉฐ, null์€ ๋ณ€์ˆ˜์— ์ธ์œ„์ ์œผ๋กœ null ์ด๋ผ๋Š” ๊ฐ’์„ ํ• ๋‹นํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜์— ์˜๋„์ ์œผ๋กœ ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์•˜๋‹ค๋Š”๊ฑธ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ null ์ด๋ผ๋Š” ๊ฐ’์„ ํ• ๋‹นํ•ด์ค„ ๋•Œ๊ฐ€ ๋งŽ๋‹ค!

 

๋ฐ•์Šค๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด,

undefined ๋Š” ๋นˆ ๋ฐ•์Šค๋งŒ ์žˆ๋Š” ์ƒํƒœ,

null ์€ ๋นˆ ๋ฐ•์Šค์— '๋น„์–ด ์žˆ์Œ' ์ด๋ผ๊ณ  ํ‘œ์‹œํ•ด๋†“์€ ์ƒํƒœ!

 

 

๋ฐ˜์‘ํ˜•