๊ด€๋ฆฌ ๋ฉ”๋‰ด

Daehyunii's Dev-blog

21์žฅ ๋นŒํŠธ์ธ ๊ฐ์ฒด ๋ณธ๋ฌธ

๐Ÿ“š Language & CS knowledge/JavaScript (๋ชจ๋˜์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive)

21์žฅ ๋นŒํŠธ์ธ ๊ฐ์ฒด

Daehyunii 2022. 7. 18. 14:18

21.1 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ๋ถ„๋ฅ˜

  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๊ฒŒ 3๊ฐœ์˜ ๊ฐ์ฒด๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด : ECMAscript ์‚ฌ์–‘์— ์ •์˜๋œ ๊ฐ์ฒด๋ฅผ ๋งํ•˜๋ฉฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ ๊ด€๊ณ„์—†์ด ์–ธ์ œ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋Š” ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ์„œ ์ œ๊ณต๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ„๋„์˜ ์„ ์–ธ ์—†์ด ์ „์—ญ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์–ธ์ œ๋‚˜ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

- ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด : ECMAscript ์‚ฌ์–‘์— ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ(ex๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” Node.js)์—์„œ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค.

- ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด : ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด์™€ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๊ธฐ๋ณธ ์ œ๊ณต๋˜๋Š” ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•œ ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค.

 

21.2 ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด

  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” Object, String, Number, Boolean, Function, Array, RegExp, Promise, Date ๋“ฑ 40์—ฌ ๊ฐœ์˜ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๊ทธ ์ค‘ Math, Reflect, Json์„ ์ œ์™ธํ•œ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋Š” ๋ชจ๋‘ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๊ฐ์ฒด๋‹ค. ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๊ฐ์ฒด์ธ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋Š” ํ”„๋กœํ† ํƒ€์ž… ๋ฉ”์„œ๋“œ์™€ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋Š” ์ •์  ๋ฉ”์„œ๋“œ๋งŒ ์ œ๊ณตํ•œ๋‹ค.(์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ prototype ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–์ง€ ์•Š์œผ๋‹ˆ๊นŒ)

//๋นŒํŠธ์ธ ๊ฐ์ฒด์ธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•œ ๊ฐ์ฒด ์ƒ์„ฑ
const strObj = new String('lee');
console.log(strObj);

const number = new Number(123);
console.log(number);

const bool = new Boolean(true);
console.log(bool);

const func = new Function('x','return x * x');
console.log(func(3));

const arr = new Array(1,2,3,4,5);
console.log(arr);

const date = new Date();
console.log(date);

21.3 ์›์‹œ๊ฐ’๊ณผ ๋ž˜ํผ ๊ฐ์ฒด

  ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ ๋“ฑ์˜ ์›์‹œ๊ฐ’์ด ์žˆ๋Š”๋ฐ๋„ ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” String, Number, Boolean ๋“ฑ์˜ ํ‘œ์ค€ ๋นŒํŠธ์ธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ ๋Š” ์›์‹œ๊ฐ’์€ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋งˆ์น˜ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”๋ฐ ๊ทธ ์ด์œ ๊ฐ€ ์žˆ๋‹ค.

//์›์‹œ ํƒ€์ž…์ธ ๋ฌธ์ž์—ด์ด ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.
const string = 'hello'

console.log(string.length); // 5
console.log(string.toUpperCase()); // HELLO

์ด๋Š” ์›์‹œ๊ฐ’์ธ ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์˜ ๊ฒฝ์šฐ ์ด๋“ค ์›์‹œ๊ฐ’์— ๋Œ€ํ•ด ๋งˆ์น˜ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๋งˆ์น˜ํ‘œ ํ‘œ๊ธฐ๋ฒ•(๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•)์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์ผ์‹œ์ ์œผ๋กœ ์›์‹œ๊ฐ’์„ ์—ฐ๊ด€๋œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋‹ค์‹œ ์›์‹œ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค. ์ด๋Ÿฌํ•œ ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ๋ž˜ํผ ๊ฐ์ฒด๋ผ ํ•œ๋‹ค. ์›์‹œ๊ฐ’์€ ์ƒ์„ฑ๋œ ๋ž˜ํผ ๊ฐ์ฒด์˜ [[์›์‹œ๊ฐ’Data]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์— ํ• ๋‹น๋˜๊ณ , ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ๋˜๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํ›„ ๋‹ค์‹œ ์›์‹œ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ ํ›„ ๋ž˜ํผ ๊ฐ์ฒด๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค.

//๋ฌธ์ž์—ด ๋ž˜ํผ ๊ฐ์ฒด
const s = 'hello';

s.name = 'lee';

console.log(s.name); // undefined ์—†๋Š” ํ”„๋กœํผํ‹ฐ๋‹ˆ๊นŒ

console.log(s); // hello

์ˆซ์ž ๊ฐ’๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค.

// ์ˆซ์ž ๋ž˜ํผ ๊ฐ์ฒด
const num = 1.5;

console.log(num.toFixed()); // ๋ž˜ํผ๊ฐ์ฒด๋กœ ํ™œ์šฉํ•˜๊ณ  ๋‹ค์‹œ ์›์‹œ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆผ

console.log(typeof num, num); // number 1.5

๋ถˆ๋ฆฌ์–ธ ๊ฐ’๋„ ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž์™€ ๋งˆ์ฐฌ๊ฐ€์ง€์ด์ง€๋งŒ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์œผ๋ฏ€๋กœ ์œ ์šฉํ•˜์ง€๋Š” ์•Š๋‹ค. ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ null๊ณผ undefined ์›์‹œ๊ฐ’์€ ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ null๊ณผ undefined ๊ฐ’์„ ๊ฐ์ฒด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

21.4 ์ „์—ญ ๊ฐ์ฒด

  ์ „์—ญ ๊ฐ์ฒด๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ด์ „ ๋‹จ๊ณ„์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์˜ํ•ด ์–ด๋–ค ๊ฐ์ฒด๋ณด๋‹ค๋„ ๋จผ์ € ์ƒ์„ฑ๋˜๋Š” ํŠน์ˆ˜ํ•œ ๊ฐ์ฒด์ด๋ฉฐ, ์–ด๋–ค ๊ฐ์ฒด์—๋„ ์†ํ•˜์ง€ ์•Š๋Š” ์ตœ์ƒ์œ„ ๊ฐ์ฒด๋‹ค. ์ „์—ญ ๊ฐ์ฒด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์ง€์นญํ•˜๋Š” ์ด๋ฆ„์ด ์ œ๊ฐ๊ฐ์ด๋‹ค. ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ๋Š” window๊ฐ€ ์ „์—ญ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค์ง€๋งŒ Node.js ํ™˜๊ฒฝ์—์„œ๋Š” global์ด ์ „์—ญ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. 

 

 ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ

1.  ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด(Object, String, Number ๋“ฑ)

2. ํ™˜๊ฒฝ์— ๋”ฐ๋ฅธ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด

3. var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ์ „์—ญ ๋ณ€์ˆ˜

4. ์ „์—ญ ํ•จ์ˆ˜

5. ์•”๋ฌต์  ์ „์—ญ

 

  ์ „์—ญ ๊ฐ์ฒด๋Š” ๊ณ„์ธต์  ๊ตฌ์กฐ์ƒ ์–ด๋–ค ๊ฐ์ฒด์—๋„ ์†ํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ๋นŒํŠธ์ธ ๊ฐ์ฒด์˜ ์ตœ์ƒ์œ„ ๊ฐ์ฒด๋‹ค. ์ „์—ญ ๊ฐ์ฒด์˜ ํŠน์ง•์€ ์ „์—ญ ๊ฐ์ฒด๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ์ „์—ญ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ์ œ๊ณต๋˜์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ window๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์•”๋ฌต์  ์ „์—ญ์ด๋ผ๋Š” ๊ฐœ๋…๋„ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ๋˜ ์ „์—ญ ๊ฐ์ฒด๋Š” ๋ช‡ ๊ฐ€์ง€ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋Š” ์ „์—ญ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹๋ณ„์ž, ์ฆ‰ window๋‚˜ global์„ ์ƒ๋žตํ•˜์—ฌ ์ฐธ์กฐ/ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ „์—ญ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋”ฐ.

 

21.4.1 ๋นŒํŠธ์ธ ์ „์—ญ ํ”„๋กœํผํ‹ฐ

  ๋นŒํŠธ์ธ ์ „์—ญ ํ”„๋กœํผํ‹ฐ๋Š” ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งํ•œ๋‹ค.

 

Infinity ํ”„๋กœํผํ‹ฐ : ์ˆซ์ž๊ฐ’ Infinity๋ฅผ ๊ฐ–๋Š”๋‹ค.

NaN ํ”„๋กœํผํ‹ฐ : ์ˆซ์ž๊ฐ’ NaN์„ ๊ฐ–๋Š”๋‹ค. ( NaN ํ”„๋กœํผํ‹ฐ๋Š” Number.NaN ํ”„๋กœํผํ‹ฐ์™€ ๊ฐ™๋‹ค.)

undefined ํ”„๋กœํผํ‹ฐ : ์›์‹œ ํƒ€์ž… undefined๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ–๋Š”๋‹ค.

 

21.4.2 ๋นŒํŠธ์ธ ์ „์—ญ ํ•จ์ˆ˜

  ๋นŒํŠธ์ธ ์ „์—ญ ํ•จ์ˆ˜๋Š” ์ „์—ญ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋‹ค.

 

isFinite ๋ฉ”์„œ๋“œ

  ์ „๋‹ฌ๋ฐ›์€ ์ธ์ˆ˜๊ฐ€ ์ •์ƒ์ ์ธ ์œ ํ•œ์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ ์œ ํ•œ์ˆ˜์ด๋ฉด true, ๋ฌดํ•œ์ˆ˜์ด๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ „๋‹ฌ๋ฐ›์€ ์ธ์ˆ˜์˜ ํƒ€์ž…์ด ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, ์ˆซ์ž๋กœ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•œ ํ›„ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.(์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜) 

console.log(isFinite(0)); // true
console.log(isFinite('10')); // true (์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜ ํ›„ ํ‰๊ฐ€)
console.log(isFinite(Infinity)); // false 

//์ธ์ˆ˜๊ฐ€ NaN์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
console.log(isFinite(NaN)); // false

isNaN ๋ฉ”์„œ๋“œ

  ์ „๋‹ฌ ๋ฐ›์€ ์ธ์ˆ˜๊ฐ€ NaN์ธ์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ „๋‹ฌ๋ฐ›์€ ์ธ์ˆ˜์˜ ํƒ€์ž…์ด ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ํ›„ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.(์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜)

console.log(isNaN(0)); // false
console.log(isNaN(NaN)); // true

console.log(isNaN('hello')); // true
console.log(isNaN('10')); // false
console.log(isNaN('')); // false

parseFloat ๋ฉ”์„œ๋“œ

  ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด ์ธ์ˆ˜๋ฅผ ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž, ์ฆ‰ ์‹ค์ˆ˜๋กœ ํ•ด์„ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ฉ”์„œ๋“œ์˜ ํŠน์ง•์€ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ์ง์ ‘ ์ดํ•ดํ•˜๋Š”๊ฒƒ์ด ์„ค๋ช…์„ ๋“ฃ๋Š”๊ฒƒ๋ณด๋‹ค ๋น ๋ฅธ๊ฒƒ ๊ฐ™๋‹ค.

console.log(parseFloat('10.22')); // 10.22
console.log(parseFloat('10.0')); // 10
console.log(parseFloat('34 52 66')); // 34
console.log(parseFloat('he 22')); // NaN
console.log(parseFloat('22 he')); // 22
console.log(parseFloat('   22   ')); // 22

parseInt ๋ฉ”์„œ๋“œ

  ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด ์ธ์ˆ˜๋ฅผ ์ •์ˆ˜๋กœ ํ•ด์„ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ „๋‹ฌ๋ฐ›์€ ์ธ์ˆ˜๊ฐ€ ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ฉด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ ์ •์ˆ˜๋กœ ํ•ด์„ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜)

console.log(parseInt('10')); // 10
console.log(parseInt('10.22')); // 10
console.log(parseInt(10)); // 10
console.log(parseInt(10.22)); // 10

21.4.3 ์•”๋ฌต์  ์ „์—ญ

  ์•”๋ฌต์  ์ „์—ญ์ด๋ž€ ๋ณ€์ˆ˜์˜ ์„ ์–ธ ์—†์ด ์‹๋ณ„์ž๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒฝ์šฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์˜ํ•ด ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ ๋™์  ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ฆ‰, window๋Š” ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ ์—†์ด ์‹๋ณ„์ž์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒฝ์šฐ window์˜ ํ”„๋กœํผํ‹ฐ๋กœ ์ƒ์„ฑ์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์•”๋ฌต์  ์ „์—ญ์€ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ ํ”„๋กœํผํ‹ฐ์ด๋ฏ€๋กœ delete ์—ฐ์‚ฐ์ž๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ var ํ‚ค์›Œ๋“œ๋กœ ์ „์—ญ ๋ณ€์ˆ˜๋Š” ํ”„๋กœํผํ‹ฐ์ด์ง€๋งŒ delete ์—ฐ์‚ฐ์ž๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค.

// var ํ‚ค์›Œ๋“œ๋กœ ์ „์—ญ ๋ณ€์ˆ˜ ์„ ์–ธ(window๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์ž„)
var x = 10;
console.log(x); // 10

delete window.x;

console.log(x); // 10



// ์•”๋ฌต์  ์ „์—ญ
y = 20;
console.log(window.y); // 20
console.log(y); // 20

delete y

console.log(y); // ReferenceError ๋ฐœ์ƒ