[JavaScript] null, undefined, undeclared์˜ ์ฐจ์ด์ , ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด
728x90

Today, What I learned?

์˜ค๋Š˜์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋…์„ ๋‹ค์‹œ ํ›‘์–ด๋ณด๋ฉฐ ์ž˜ ๋ชฐ๋ž๋˜ ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค. ํƒ€์ž… ์ค‘ null๊ณผ undefined, undeclared์˜ ์ฐจ์ด์ ๊ณผ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค!

 

 

null, undefined, undeclared์˜ ์ฐจ์ด์ 

๋จผ์ € undefined๋ถ€ํ„ฐ ์ •๋ฆฌํ•ด๋ณด์ž!

 

undefined

undefined๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์ธ๋ฐ,

์Šค์ฝ”ํ”„์— ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜์—ˆ์ง€๋งŒ ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ƒํƒœ๋‹ค. ๊ณ ๋กœ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•˜์„ ๋•Œ์˜ ๊ฐ’์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

let name;
console.log(name); // undefined

 

null

undefined์™€ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€ null.

๊ฐ’์ด ์—†๋Š” ๊ฒƒ์„ ์˜๋„์ ์œผ๋กœ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— undefined์™€ ๋‹ค๋ฅด๋‹ค.

let name = 'Lee';
console.log(name); // Lee

name = null;
console.log(name); // null

 

undeclared

๊ฐ„ํ˜น ์‹ค์ˆ˜๋กœ ์•„๋ž˜ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

undeclared๋Š” ์Šค์ฝ”ํ”„ ๋‚ด์— ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ์กฐ์ฐจ ๋˜์ง€ ์•Š์•˜์„ ๋•Œ๋ฅผ ๋งํ•œ๋‹ค.
Lee๋ผ๋Š” ๋ณ€์ˆ˜๋Š” ํ˜„์žฌ ์„ ์–ธ๋„ ๋˜์–ด์žˆ์ง€ ์•Š์€ ์ƒํƒœ! ๊ณ ๋กœ undeclared ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

let name = 'Lee';
console.log(Lee); // ReferenceError: Lee is not defined

 

 

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ง€์›ํ•œ๋‹ค.

๊ทธ์ค‘์—์„œ๋„ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.
์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

const ๋ณ€์ˆ˜๋ช… = {
    ์†์„ฑ๋ช…: ๋ฐ์ดํ„ฐ,
    ๋ฉ”์„œ๋“œ๋ช…: function () { ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์‹œ ์‹คํ–‰ํ•  ์ฝ”๋“œ๋“ค }
}

 

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์€ ์ด๋Ÿฐ ํŠน์ง•๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์˜ ํŠน์ง•

  • ๊ฐ์ฒด๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ‚ค๋Š” ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์„œ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค. person\['name'\]
  • ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค. person\['age'\] = 10 ๊ณผ ๊ฐ™์€ ์˜ˆ์‹œ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ!
  • delete ์—ฐ์‚ฐ์ž๋กœ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค. delete person.age

 

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

๊ทธ๋ž˜์„œ ์ด ๊ฒฝ์šฐ์—๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ !

 

ES6์—์„œ ์ถ”๊ฐ€๋œ ํ™•์žฅ ๊ธฐ๋Šฅ

ํ”„๋กœํผํ‹ฐ ๊ฐ’์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ํ”„๋กœํผํ‹ฐ์˜ ํ‚ค์™€ ๋ณ€์ˆ˜๋ช…์ด ๊ฐ™์€ ๊ฒฝ์šฐ ์ถ•์•ฝํ•ด์„œ ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

const a = 'apple';
const b = 1;

const obj = {a, b};

 

๋˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ๋•Œ function ํ‚ค์›Œ๋“œ๋ฅผ ์ƒ๋žตํ•˜์—ฌ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

const person = {
    name: 'Lee',
    sayHi(){
        console.log(`Hi, ${this.name}!`); // Hi Lee!
    }
}

 

๋งˆ์ง€๋ง‰์œผ๋กœ ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ๊ณ„์‚ฐ๋œ ์ด๋ฆ„์œผ๋กœ ๋™์  ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

const prefix = 'index';
let i = 0;

const obj = {
  [`${prefix}-${++i}`]: i,
  [`${prefix}-${++i}`]: i,
  [`${prefix}-${++i}`]: i,
}; // { 'index-1': 1, 'index-2': 2, 'index-3': 3 }

 

 

ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ๋Œ€๊ด„ํ˜ธ๋กœ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ํ•  ๋•Œ ํ•œ ๋ฒˆ์”ฉ์€ ์‹ค์ˆ˜ํ•ด์„œ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋Š” ์ผ์ด ์žฆ์•˜๋Š”๋ฐ,

์ด๋ฒˆ ์ •๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

728x90