๐Ÿ“Œ 09์žฅ ํƒ€์ž… ๋ณ€ํ™˜๊ณผ ๋‹จ์ถ• ํ‰๊ฐ€


9.1 ํƒ€์ž…๋ณ€ํ™˜์ด๋ž€?

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

์›์‹œ ๊ฐ’์ด๋ž€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’์ด๋ฏ€๋กœ ๋ช…์‹œ์  ํƒ€์ž… ๋ณ€ํ™˜์ด๋‚˜ ์•”๋ฌต์  ํƒ€์ž…๋ณ€ํ™˜์— ์˜ํ•ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค. ํƒ€์ž… ๋ณ€ํ™˜์ด๋ž€ ๊ธฐ์กด ์›์‹œ ๊ฐ’์„ ์‚ฌ์šฉํ•ด ๋‹ค๋ฅธ ํƒ€์ž…์˜ ์ƒˆ๋กœ์šด ์›์‹œ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š”๊ฒƒ์ด๋‹ค.


9.2 ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜

9.2.1 ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜

  // ์ˆซ์ž ํƒ€์ž…
  0 + ''              // "0"
  -0 + ''             // "0"
  1+ ''               // "1"
  -1 + ''             // "-1"
  NaN + ''            // "NaN"
  Infinity + ''       // "Infinity"
  -Infinity + ''      // "-Infinity"

  // ๋ถ€์šธ๋ฆฌ์–ธ ํƒ€์ž…
  true + ''           // "true"
  false + ''          // "false"

  // null ํƒ€์ž…
  null + ''           // "null"

  // undefined ํƒ€์ž…
  undefined + ''      // "undefined"

  // ์‹ฌ๋ฒŒ ํƒ€์ž…
  (Symbol()) + ''     // "TypeError"

  // ๊ฐ์ฒด ํƒ€์ž…
  ({}) + ''           // "[object Object]"
  Math + ''           // "[object Math]"
  [] + ''             // ""
  [10, 20] + ''       // "10, 20"
  (function(){}) + '' // "function()"
  Array + ''          // "function Array() {[native code]}"

9.2.2 ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜

  // ์ˆซ์ž ํƒ€์ž…
  +''               // 0
  +'0'              // 0
  +'1'              // 1 
  +'string'         //  NaN

  // ๋ถ€์šธ๋ฆฌ์–ธ ํƒ€์ž…
  +true             //  1
  +false            //  0

  // null ํƒ€์ž…
  +null             //  0

  // undefined ํƒ€์ž…
  +undefined        //  NaN

  // ์‹ฌ๋ฒŒ ํƒ€์ž…
  +Symbol()         //  TypeError

  // ๊ฐ์ฒด ํƒ€์ž…
  +{}               //  NaN
  +[]               //  0
  +[10, 20]         //  NaN
  +(function(){})   //  NaN

9.2.3 ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋ถ€์šธ๋ฆฌ์–ธ ํƒ€์ž…์ด ์•„๋‹Œ ๊ฐ’์„ Truthy ๊ฐ’ ๋˜๋Š” Falsy ๊ฐ’์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ๊ฐ๊ฐ true์™€ false๋กœ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜ ํ•œ๋‹ค. ๋‹ค์Œ์€ false๋กœ ํ‰๊ฐ€๋˜๋Š” Falsy ๊ฐ’์ด๋‹ค. Falsy์™€ Truthy ๊ฐ’ ์•ž์— ๋Š๋‚Œํ‘œ(!)๋ฅผ ๋ถ™์–ด์ฃผ๋ฉด ๊ฐ๊ฐ true์™€ false๋กœ ์ „๋‹ฌ๋œ๋‹ค.

  • false
  • undefined
  • null
  • 0, -0
  • NaN
  • โ€˜โ€™(๋นˆ ๋ฌธ์ž์—ด)

9.3 ๋ช…์‹œ์  ํƒ€์ž… ์ „ํ™˜

๊ฐœ๋ฐœ์ž์˜ ์˜๋„์— ๋”ฐ๋ผ ๋ช…์‹œ์ ์œผ๋กœ ํƒ€์ž…์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ‘œ์ค€ ๋นŒํŠธ์ธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ new ์—ฐ์‚ฐ์ž ์—†์ด ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•, ๋นŒํŠธ์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•, ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

๐Ÿง ํ‘œ์ค€ ๋นŒํŠธ์ธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ๋นŒํŠธ์ธ ๋ฉ”์„œ๋“œ

ํ‘œ์ค€ ๋นŒํŠธ์ธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๋ฉ”์„œ๋“œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ธฐ๋ณธ ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜๋‹ค. ํ‘œ์ค€ ๋นŒํŠธ์ธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜์ด๋ฉฐ new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•œ๋‹ค. ํ‘œ์ค€ ๋นŒํŠธ์ธ ๋ฉ”์„œ๋“œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ธฐ๋ณธ ์ œ๊ณตํ•˜๋Š” ๋นŒํŠธ์ธ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋‹ค.

9.3.1 ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜

  • String ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ new ์—ฐ์‚ฐ์ž ์—†์ด ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•

    // ์ˆซ์ž ํƒ€์ž… => ๋ฌธ์ž์—ด ํƒ€์ž…
    String(1);              // "1"
    String(NaN);            // "NaN"
    String(Infinity);       // "Infinity"
    
    // ๋ถ€์šธ๋ฆฌ์–ธ ํƒ€์ž… => ๋ฌธ์ž์—ด ํƒ€์ž…
    String(true)            // "true"
    String(false)           // "false"
  • Object.prototype.toString ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

    // ์ˆซ์ž ํƒ€์ž… => ๋ฌธ์ž์—ด ํƒ€์ž…
    (1).toString();         // "1"
    (NaN).toString();       // "NaN"
    (Infinity)toString();   // "Infinity"
    
    // ๋ถ€์šธ๋ฆฌ์–ธ ํƒ€์ž… => ๋ฌธ์ž์—ด ํƒ€์ž…
    (true).toString();      // "true"
    (false).toString();     // "false"
  • ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

      // ์ˆซ์ž ํƒ€์ž… => ๋ฌธ์ž์—ด ํƒ€์ž…
      1 + ''                  // "1"
      NaN + ''                //  "NaN"
      Infinity + ''           // "Infinity"
    
      // ๋ถ€์šธ๋ฆฌ์–ธ ํƒ€์ž… => ๋ฌธ์ž์—ด ํƒ€์ž…
      true + ''               // "true"
      false + ''              // "false"

9.3.2 ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜

  • Number ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ new ์—ฐ์‚ฐ์ž ์—†์ด ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•
      // ๋ฌธ์ž์—ด ํƒ€์ž… => ์ˆซ์ž ํƒ€์ž…
      Number('0');     // -> 0
      Number('-1');    // -> -1
      Number('10.53'); // -> 10.53
      // ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž… => ์ˆซ์ž ํƒ€์ž…
      Number(true);    // -> 1
      Number(false);   // -> 0
  • parseInt, parseFloatํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•(๋ฌธ์ž์—ด๋งŒ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ)
      parseInt('0');       // -> 0
      parseInt('-1');      // -> -1
      parseFloat('10.53'); // -> 10.53
  • + ๋‹จํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
      // ๋ฌธ์ž์—ด ํƒ€์ž… => ์ˆซ์ž ํƒ€์ž…
      +'0';     // -> 0
      +'-1';    // -> -1
      +'10.53'; // -> 10.53
      // ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž… => ์ˆซ์ž ํƒ€์ž…
      +true;    // -> 1
      +false;   // -> 0
  • * ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
      // ๋ฌธ์ž์—ด ํƒ€์ž… => ์ˆซ์ž ํƒ€์ž…
      '0' * 1;     // -> 0
      '-1' * 1;    // -> -1
      '10.53' * 1; // -> 10.53
      // ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž… => ์ˆซ์ž ํƒ€์ž…
      true * 1;    // -> 1
      false * 1;   // -> 0

9.3.3 ๋ถ€์šธ๋ฆฌ์–ธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜

  • Boolean ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ new ์—ฐ์‚ฐ์ž ์—†์ด ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•
      // ๋ฌธ์ž์—ด ํƒ€์ž… => ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…
      Boolean('x');       // -> true
      Boolean('');        // -> false
      Boolean('false');   // -> true
      // ์ˆซ์ž ํƒ€์ž… => ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…
      Boolean(0);         // -> false
      Boolean(1);         // -> true
      Boolean(NaN);       // -> false
      Boolean(Infinity);  // -> true
      // null ํƒ€์ž… => ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…
      Boolean(null);      // -> false
      // undefined ํƒ€์ž… => ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…
      Boolean(undefined); // -> false
      // ๊ฐ์ฒด ํƒ€์ž… => ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…
      Boolean({});        // -> true
      Boolean([]);        // -> true
  • ! ๋ถ€์ • ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ๋‘ ๋ฒˆ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
      // ๋ฌธ์ž์—ด ํƒ€์ž… => ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…
      !!'x';       // -> true
      !!'';        // -> false
      !!'false';   // -> true
      // ์ˆซ์ž ํƒ€์ž… => ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…
      !!0;         // -> false
      !!1;         // -> true
      !!NaN;       // -> false
      !!Infinity;  // -> true
      // null ํƒ€์ž… => ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…
      !!null;      // -> false
      // undefined ํƒ€์ž… => ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…
      !!undefined; // -> false
      // ๊ฐ์ฒด ํƒ€์ž… => ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…
      !!{};        // -> true
      !![];        // -> true

9.4 ๋‹จ์ถ• ํ‰๊ฐ€

9.4.1 ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ ๋‹จ์ถ•ํ‰๊ฐ€

๋…ผ๋ฆฌ๊ณฑ(&&) ์—ฐ์‚ฐ์ž๋Š” ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ true๋กœ ํ‰๊ฐ€๋  ๋•Œ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋…ผ๋ฆฌ๊ณฑ ์—ฐ์‚ฐ์ž๋Š” ์ขŒํ•ญ์—์„œ ์šฐํ•ญ์œผ๋กœ ํ‰๊ฐ€๊ฐ€ ์ง„ํ–‰๋œ๋‹ค. ๋…ผ๋ฆฌ๊ณฑ ์—ฐ์‚ฐ์ž๋Š” ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž, ์ฆ‰ ๋ฌธ์ž์—ด โ€˜Dogโ€™๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋…ผ๋ฆฌํ•ฉ(||) ์—ฐ์‚ฐ์ž๋Š” ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๋งŒ true๋กœ ํ‰๊ฐ€ ๋˜์–ด๋„ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋…ผ๋ฆฌํ•ฉ ์—ฐ์‚ฐ์ž๋„ ์ขŒํ•ญ์—์„œ ์šฐํ•ญ์œผ๋กœ ํ‰๊ฐ€๊ฐ€ ์ง„ํ–‰๋œ๋‹ค. ๋…ผ๋ฆฌํ•ฉ ์—ฐ์‚ฐ์ž๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•œ ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž, ์ฆ‰ ๋ฌธ์ž์—ด โ€˜Catโ€™ ์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋…ผ๋ฆฌ๊ณฑ ์—ฐ์‚ฐ์ž์™€ ๋…ผ๋ฆฌํ•ฉ ์—ฐ์‚ฐ์ž๋Š” ์ด์ฒ˜๋Ÿผ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ํƒ€์ž… ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋ฅผ ๋‹จ์ถ• ํ‰๊ฐ€๋ผ๊ณ  ํ•œ๋‹ค. ๋‹จ์ถ• ํ‰๊ฐ€๋Š” ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜๋Š” ๋„์ค‘์— ํ‰๊ฐ€๊ฒฐ๊ณผ๊ฐ€ ํ™•์ •๋œ ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ํ‰๊ฐ€ ๊ณผ์ •์„ ์ƒ๋žตํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋‹จ์ถ•ํ‰๊ฐ€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด if ๋ฌธ์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋Š” if-else ๋ฌธ์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.

  true || anything // true
  false || anything // anything
  true && anything // anything
  false && anything // false

  var done = true;
  var message = '';

  // if...else ๋ฌธ
  if (done) message = '์™„๋ฃŒ';
  else      message = '๋ฏธ์™„๋ฃŒ';
  console.log(message); // ์™„๋ฃŒ

  // if...else ๋ฌธ์€ ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•˜๋‹ค.
  message = done ? '์™„๋ฃŒ' : '๋ฏธ์™„๋ฃŒ';
  console.log(message); // ์™„๋ฃŒ

9.4.2 ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž

ES11(ECMAScript2020)์— ๋„์ž…๋œ ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž (?.)๋Š” ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ null ๋˜๋Š” undefined์ธ ๊ฒฝ์šฐ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์šฐํ•ญ์˜ ํ”„๋กœํผํ‹ฐ ์ฐธ์กฐ๋ฅผ ์ด์–ด๊ฐ„๋‹ค.

  var elem = null;

  // elem์ด null ๋˜๋Š” undefined์ด๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์šฐํ•ญ์˜ ํ”„๋กœํผํ‹ฐ ์ฐธ์กฐ๋ฅผ ์ด์–ด๊ฐ„๋‹ค.
  var value = elem?.value;
  console.log(value);        // undefined

9.4.3 null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž

ES11(ECMAScript2020)์— ๋„์ž…๋œ null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ??๋Š” ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž null ๋˜๋Š” undefined์ธ ๊ฒฝ์šฐ ์šฐํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ??๋Š” ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

  // ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ null ๋˜๋Š” undefined์ด๋ฉด ์šฐํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , 
  // ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  var foo = null ?? 'default string'
  console.log(foo);        // "default string"

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ