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

JavaScript

[JavaScript] ๋นŒํŠธ์ธ ๊ฐ์ฒด

๋ฐ˜์‘ํ˜•

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

  • ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด : ECMAScript ์‚ฌ์–‘์— ์ •์˜๋œ ๊ฐ์ฒด๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ™˜๊ฒฝ๊ณผ ๊ด€๊ณ„์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”, ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ์„œ ์ œ๊ณต๋˜๋Š” ๊ฒƒ.
  • ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด๋กœ Web API(DOM, BOM, Canvas, fetch ,requestAnimationFrame, SVG, Web Storage ๋“ฑ), Node.js ๊ณ ์œ ์˜ API.
  • ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด : ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•œ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธ.

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

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” Object, String, Number, Boolean, Symbol, Date, Math, RefExp, Array, Map/Set, Function, Promise, Reflect, Proxy, JSON, Error ๋“ฑ 40์—ฌ ๊ฐœ์˜ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ Math, Reflect, JSON์„ ์ œ์™ธํ•œ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋Š” ๋ชจ๋‘ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๊ฐ์ฒด
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๊ฐ์ฒด์ธ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋Š” ํ”„๋กœํ† ํƒ€์ž… ๋ฉ”์„œ๋“œ์™€ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณต
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋Š” ์ •์  ๋ฉ”์„œ๋“œ๋งŒ ์ œ๊ณต
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜์ธ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑํ•œ ์ธ์Šคํ„ด์Šค์˜ ํ”„๋กœํ† ํƒ€์ž…์€ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด์˜ prototype ํ”„๋กœํผํ‹ฐ์— ๋ฐ”์ธ๋”ฉ๋œ ๊ฐ์ฒด
    // String ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์˜ํ•œ String ๊ฐ์ฒด ์ƒ์„ฑ
    const strObj = new String("Park");
    
    // String ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒ์„ ํ•œ strObj ๊ฐ์ฒด์˜ ํ”„๋กœํ† ํƒ€์ž…์€ String.prototype
    console.log(Object.getPrototypeOf(strObj) === String.prototype); // trueโ€‹
  • ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด์˜ prototype ํ”„๋กœํผํ‹ฐ์— ๋ฐ”์ธ๋”ฉ๋œ ๊ฐ์ฒด(String.prototype)๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์˜ ๋นŒํŠธ์ธ ํ”„๋กœํ† ํƒ€์ž… ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์ธ์Šคํ„ด์Šค ์—†์ด๋„ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ๋นŒํŠธ์ธ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณต
    const numObj = new Number(3.5); //Number ๊ฐ์ฒด ์ƒ์„ฑ
    
    // toFixed๋Š” Number.prototype์˜ ํ”„๋กœํ† ํƒ€์ž… ๋ฉ”์„œ๋“œ์ด๋‹ค.
    console.log(numObj.toFixed()); //4
    
    // isInteger๋Š” Number์˜ ์ •์  ๋ฉ”์„œ๋“œ๋‹ค.
    console.log(Number.isInteger(3.5)); //falseโ€‹

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

๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ ๋“ฑ์˜ ์›์‹œ๊ฐ’๊ณผ ๋ณ„๊ฐœ๋กœ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ‘œ์ค€ ๋นŒํŠธ์ธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ ?

  • ์›์‹œ๊ฐ’์€ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ๋งˆ์นจํ‘œ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉด ๋งˆ์น˜ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๋™์ž‘.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์•”๋ฌต์ ์œผ๋กœ ์—ฐ๊ด€๋œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋กœ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋‹ค์‹œ ์›์‹œ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆผ.
  • ์œ„ ๋ฌธ์žฅ์—์„œ ์—ฐ๊ด€๋œ ๊ฐ์ฒด๋ฅผ ๋ž˜ํผ ๊ฐ์ฒด๋ผ๊ณ  ํ•จ.
    const str = "hello world";
    
    // ๋งˆ์นจํ‘œ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ์ˆœ๊ฐ„์— ์›์‹œ ํƒ€์ž…์ธ ๋ฌธ์ž์—ด์ด ๋ž˜ํผ ๊ฐ์ฒด์ธ String ์ธ์Šคํ„ด์Šค๋กœ ๋ณ€ํ™˜๋จ.
    console.log(str.length); // 11;
    
    // ๋ž˜ํผ ๊ฐ์ฒด๋กœ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ํ›„, ๋‹ค์‹œ ์›์‹œ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆผ.
    console.log(typeof str); // string;โ€‹
     

๋ฌธ์ž์—ด ๋ž˜ํผ ๊ฐ์ฒด์˜ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ

  • ๋ฌธ์ž์—ด ๋ž˜ํผ ๊ฐ์ฒด์ธ String ์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ ์ธ์Šคํ„ด์Šค๋Š” String.prototype์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•˜๊ณ  ๋ž˜ํผ ๊ฐ์ฒด์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ž˜ํผ ๊ฐ์ฒด์˜ [[StringData]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์— ํ• ๋‹น๋œ ์›์‹œ๊ฐ’์œผ๋กœ ์›๋ž˜์˜ ์ƒํƒœ, ์ฆ‰ ์‹๋ณ„์ž๊ฐ€ ์›์‹œ๊ฐ’์„ ๊ฐ–๋„๋ก ๋˜๋Œ๋ฆฌ๊ณ  ๋ž˜ํผ ๊ฐ์ฒด๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค.
  • // 1. ์‹๋ณ„์ž str์€ ๋ฌธ์ž์—ด์„ ๊ฐ’์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์Œ. 
    const str = 'daniel'; 
    
    // 2. str์€ ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  
    // str์˜ ๊ฐ’ 'daniel'์€ ๋ž˜ํผ ๊ฐ์ฒด์˜ [[StringData]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์— ํ• ๋‹น๋จ. 
    // ๋ž˜ํผ ๊ฐ์ฒด์— name ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€๋จ 
    str.name = 'park'; 
    
    // 3. ์‹๋ณ„์ž str์€ ๋‹ค์‹œ ์›๋ž˜์˜ ๋ฌธ์ž์—ด, ์ฆ‰ ๋ž˜ํผ ๊ฐ์ฒด์˜ [[StringData]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์— ํ• ๋‹น๋œ ์›์‹œ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค. 
    // ์ด๋•Œ 2์—์„œ ์ƒ์„ค๋œ ๋ž˜ํผ ๊ฐ์ฒด๋Š” ์•„๋ฌด๋„ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ์ด๋ฏ€๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค. 
    
    // 4. ์‹๋ณ„์ž str์€ ์ƒˆ๋กญ๊ฒŒ ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑ๋œ(2์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์™€๋Š” ๋‹ค๋ฅธ) ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. 
    // ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋œ ๋ž˜ํผ ๊ฐ์ฒด์—๋Š” name ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ undefined 
    
    console.log(str.name); // undefinedโ€‹
  •  ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ ๊ฐ’๋„ ์œ„ ๋ฌธ์ž์—ด ๊ฐ’๊ณผ ๊ฐ™์ง€๋งŒ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์œ ์šฉํ•˜์ง€ ์•Š๋‹ค.
  • Symbol์˜ ๊ฒฝ์šฐ ๋ฆฌํ„ฐ๋Ÿด ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๊ธฐ์—(Symbol ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ) ๋‹ค๋ฅธ ์›์‹œ๊ฐ’๊ณผ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.
  • ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ์€ ๋ž˜ํผ ๊ฐ์ฒด์— ์˜ํ•ด ๋งˆ์น˜ ๊ฐ์ฒด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด์ธ String, Number, Boolean์˜ ํ”„๋กœํ† ํƒ€์ž… ๋ฉ”์„œ๋“œ ๋˜๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. 
  • null, undefined์˜ ๊ฒฝ์šฐ ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฐ์ฒด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๐Ÿ€ ์ „์—ญ ๊ฐ์ฒด

์ „์—ญ ๊ฐ์ฒด๋Š” ๊ณ„์ธต์  ๊ตฌ์กฐ์ƒ ์–ด๋–ค ๊ฐ์ฒด์—๋„ ์†ํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ๋นŒํŠธ์ธ ๊ฐ์ฒด์˜ ์ตœ์ƒ์œ„ ๊ฐ์ฒด๋กœ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด์™€ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด๋ฅผ ํ”„๋กœํผํ‹ฐ๋กœ ์†Œ์œ ํ•œ๋‹ค. 

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

  • Infinity : ๋ฌดํ•œ๋Œ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž๊ฐ’ Infinity๋ฅผ ๊ฐ€์ง
    console.log(3/0); // Infinity
    console.log(-3/0); // -Infinity
    console.log(typeof Infinity); // numberโ€‹
  • NaN : ์ˆซ์ž๊ฐ€ ์•„๋‹˜(Not-a-Number)์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž๊ฐ’ NaN์„ ๊ฐ€์ง
    console.log(Number('xyz')); // NaN
    console.log(1 * 'string'); // NaN
    console.log(typeof NaN); // numberโ€‹
  • undefined : undefined ํ”„๋กœํผํ‹ฐ๋Š” ์›์‹œํƒ€์ž… undefined๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ€์ง
    var foo;
    console.log(foo); // undefined
    console.log(typeof undefined)l; // undefinedโ€‹

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

  • eval : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์„ ์ธ์ˆ˜๋กœ ๋ฐ›๊ณ , ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด์ด ํ‘œํ˜„์‹์ด๋ผ๋ฉด eval ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด ์ฝ”๋“œ๋ฅผ ๋Ÿฐํƒ€์ž„์— ํ‰๊ฐ€ํ•˜์—ฌ ๊ฐ’์„ ์ƒ์„ฑํ•˜๊ณ , ์ „๋‹ฌ๋ฐ›์€ ์ธ์ˆ˜๊ฐ€ ํ‘œํ˜„์‹์ด ์•„๋‹Œ ๋ฌธ์ด๋ผ๋ฉด eval ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด ์ฝ”๋“œ๋ฅผ ๋Ÿฐํƒ€์ž„์— ์‹คํ–‰ํ•œ๋‹ค. ๋ฌธ์ž์—ด ์ฝ”๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๋ฉด ๋ชจ๋“  ๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.
    // ํ‘œํ˜„์‹
    eval('1 + 1'); // 2
    
    // ํ‘œํ˜„์‹์ด ์•„๋‹Œ ๋ฌธ
    eval('var myName = daniel;'); // undefined
    
    //eval ํ•จ์ˆ˜์— ์˜ํ•ด ๋Ÿฐํƒ€์ž„์— ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์ด ์‹คํ–‰๋˜์–ด x ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋จ.
    console.log(myName); // daniel
    
    //๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด๊ณผ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์€ ๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์•ผํ•œ๋‹ค.
    const obj = eval('({myName : `daniel`})');
    console.log(obj); //{myName : 'daniel'}
    
    const greeting = eval('(function(){return `์•ˆ๋…•ํ•˜์„ธ์š”`})');
    console.log(greeting()); // ์•ˆ๋…•ํ•˜์„ธ์š”โ€‹
    ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด ์ฝ”๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๋ฉด ๋ชจ๋“  ๋ฌธ์„ ์‹คํ–‰ํ•œ ๋‹ค์Œ ๋งˆ์ง€๋ง‰ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    eval('1 + 1; 2 + 2;'); // 4โ€‹
    eval ํ•จ์ˆ˜๋Š” ์ž์‹ ์ด ํ˜ธ์ถœ๋œ ์œ„์น˜์— ํ•ด๋‹นํ•˜๋Š” ๊ธฐ์กด์˜ ์Šค์ฝ”ํ”„๋ฅผ ๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ์ˆ˜์ •ํ•œ๋‹ค. 
    const myName = 'paul';
    
    function foo(){
    	eval('var myName = `Noah`;');
        console.log(myName); // Noah
    }
    
    foo();
    console.log(myName); // paul;
    ์œ„ ์ฝ”๋“œ์—์„œ eval์€ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜ myName์„ ์„ ์–ธํ•˜๋ฉฐ foo ํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„์— ์„ ์–ธ๋œ myName๋ณ€์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๋Ÿฐํƒ€์ž„ ์ด์ „์— ๋จผ์ € ํ•จ์ˆ˜ ๋ชธ์ฒด ๋‚ด๋ถ€์˜ ๋ชจ๋“  ์„ ์–ธ๋ฌธ์„ ๋จผ์ € ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์Šค์ฝ”ํ”„์— ๋“ฑ๋กํ•˜๊ธฐ์— evalํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ์‹œ์ ์—์„œ๋Š” ์ด๋ฏธ fooํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ eval ํ•จ์ˆ˜๋Š” ๊ธฐ์กด์˜ ์Šค์ฝ”ํ”„๋ฅผ ๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ์ˆ˜์ •ํ•œ๋‹ค.  eval ํ•จ์ˆ˜์•ˆ์— ์ „๋‹ฌ๋œ ๋ฌธ์ž์—ด ์ฝ”๋“œ๋Š” ์ด๋ฏธ ๊ทธ ์œ„์น˜์— ์กด์žฌํ•˜๋˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋ฏ€๋กœ fooํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„์—์„œ ์‹คํ–‰๋œ๋‹ค. (strict mode์—์„œ๋Š” eval ํ•จ์ˆ˜ ์ž์‹ ์˜ ์ž์ฒด์ ์ธ ์Šค์ฝ”ํ”„๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.) eval์€ ๋ณด์•ˆ์— ๋งค์šฐ ์ทจ์•ฝํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์„ ๊ธˆํ•ด์•ผํ•œ๋‹ค. 
  • isFinite : ์œ ํ•œ์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ booleanํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 
  • isNaN : NaN์ธ์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ booleanํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • parseFloat : ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ์‹ค์ˆ˜๋กœ ํ•ด์„ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • parseInt : ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด ์ธ์ˆ˜๋ฅผ ์ •์ˆ˜๋กœ ํ•ด์„ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 
์•”๋ฌต์  ์ „์—ญ

ํ•จ์ˆ˜๋‚ด์—์„œ ์„ ์–ธํ•˜์ง€ ์•Š์€ ์‹๋ณ„์ž์— ๊ฐ’์„ ํ• ๋‹น์„ ํ•ด๋†“๊ณ  ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ฐธ์กฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ ์„ ์–ธํ•˜์ง€ ์•Š์€ ์‹๋ณ„์ž๋Š” ๋งˆ์น˜ ์„ ์–ธ๋œ ์ „์—ญ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค. ์ด๋Š” ์„ ์–ธํ•˜์ง€ ์•Š์€ ์‹๋ณ„์ž์— ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ ์ด ์‹๋ณ„์ž๊ฐ€ ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋˜๊ธฐ๋•Œ๋ฌธ์ด๊ณ  ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ์•”๋ฌต์  ์ „์—ญ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด ์‹๋ณ„์ž๋Š” ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋˜์—ˆ์„ ๋ฟ ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ธฐ์— ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

 

 

 

 

์ถœ์ฒ˜ : ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋”ฅ๋‹ค์ด๋ธŒ

๋ฐ˜์‘ํ˜•