21.02.02

์ด์†Œ์ž„ยท2021๋…„ 2์›” 2์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
10/12

๐Ÿ’ก

์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ˆ˜๋„์ฝ”๋“œ ์ž‘์„ฑ Checklist

    • ์š”๊ตฌ์‚ฌํ•ญ์ด ํ•˜๋‚˜ ์ด์ƒ์ธ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ์ชผ๊ฐœ์„œ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    • ๋ฌธ์ œ๋ฅผ ์ผ์ƒ์ ์ธ ๋ฌธ์žฅ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? (ํ•ด๋‹น ์œ„์น˜์— ๋ฐ”๋ฅด๊ฒŒ ์ฃผ์„์„ ์ ์„ ์ˆ˜ ์žˆ๋Š”๊ฐ€?)
    • ์ž˜๊ฒŒ ์ชผ๊ฐ  ํŠน์ • ๋ฌธ์ œ๋ฅผ JavaScript์˜ ๊ฐœ๋…๊ณผ ์—ฐ๊ด€๋˜๋Š”์ง€ ์ƒ๊ฐํ•ด๋‚ผ ์ˆ˜ ์žˆ๋Š”๊ฐ€?
  • ์ฝ”๋”ฉํ•˜๊ธฐ ์ „์— ์–ด๋–ป๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ๋ฆ„์„ ํŒŒ์•…ํ•˜์ž.

  • ์ˆ˜๋„์ฝ”๋“œ ์˜ˆ์‹œ (ํ…์ŠคํŠธ์—์„œ foo๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์ฐพ์•„ ์ „๋ถ€ ๋‹ค๋ฅธ ๋‹จ์–ด๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ฝ”๋“œ)

    1. ๊ธฐ๋ณธ

      • ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š”๋‹ค
      • foo๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์ฐพ๋Š”๋‹ค
      • ๊ทธ ๋‹จ์–ด๋ฅผ ์ง€์šด๋‹ค
      • ๊ทธ ์ž๋ฆฌ์— ์ƒˆ๋กœ์šด ๋‹จ์–ด๋ฅผ ๋„ฃ๋Š”๋‹ค
      • ๋ฐ”๋€ ๋‚ด์šฉ์„ ๋ฆฌํ„ดํ•œ๋‹ค
    2. ๊ตฌ์ฒดํ™” (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๋ฉฐ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์“ธ์ง€ ๊ตฌ์ฒดํ™”ํ•ด ๋ณธ๋‹ค.)

      • ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š”๋‹ค
      • foo๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์ฐพ๋Š”๋‹ค
      • ๋๊นŒ์ง€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณธ ํ›„,
      • foo๋ผ๋Š” ๊ธ€์ž์˜ index๊ฐ€ -1์ด ์•„๋‹ˆ๋ฉด ๋‹จ์–ด๋ฅผ ์ฐพ์€ ๊ฒƒ์ด๋‹ค
      • while index๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด
      • index๋ฅผ ์ด์šฉํ•ด foo ๋ฐ”๋กœ ์•ž๊นŒ์ง€์˜ ํ…์ŠคํŠธ๋ฅผ ์–ป์–ด๋‚ด๊ณ 
      • foo ๋Œ€์‹  ์ƒˆ๋กœ์šด ๋‹จ์–ด๋ฅผ ๋„ฃ๋Š”๋‹ค
      • foo ์ดํ›„์˜ ํ…์ŠคํŠธ๋ฅผ ๋„ฃ๋Š”๋‹ค
      • endwhile
    3. ๊ตฌํ˜„

      function replaceFoo(text) {
        // foo๋ผ๋Š” ๊ธ€์ž์˜ index๊ฐ€ -1์ด ์•„๋‹ˆ๋ฉด ๋‹จ์–ด๋ฅผ ์ฐพ์€ ๊ฒƒ์ด๋‹ค
        while( text.indexOf('foo') !== -1 ) { // index๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด
          let index = text.indexOf('foo');
      
          // index๋ฅผ ์ด์šฉํ•ด foo ๋ฐ”๋กœ ์•ž๊นŒ์ง€์˜ ํ…์ŠคํŠธ๋ฅผ ์–ป์–ด๋‚ด๊ณ 
          let beforeText = text.slice(0, index);
          // foo ๋Œ€์‹  ์ƒˆ๋กœ์šด ๋‹จ์–ด๋ฅผ ๋„ฃ๋Š”๋‹ค
          let replaceText = 'BAR';
          // foo ์ดํ›„์˜ ํ…์ŠคํŠธ๋ฅผ ๋„ฃ๋Š”๋‹ค
          let afterText = text.slice(index + 3); // 'foo'๋Š” ์„ธ ๊ธ€์ž์ด๋ฏ€๋กœ 3์„ ๋”ํ•จ
      
          text = beforeText + replaceText + afterText;
        }
      
        return text; // ๋ฐ”๋€ ๋‚ด์šฉ์„ ๋ฆฌํ„ดํ•œ๋‹ค
      }
    4. (+) ๋ฌธ์ œ ๋ถ„ํ•ด

      • ์œ„ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋Šฅ๋ณ„๋กœ ๊ตฌ๋ถ„ํ•ด ์ˆ˜์ •ํ•˜์—ฌ, ์•„๋ž˜์ฒ˜๋Ÿผ ๊ฐ๊ฐ ๋ณดํŽธ์ ์ธ ํ•จ์ˆ˜๋กœ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ๋‹ค.
      • find(text, searchString);
        replace(text, searchString, replaceString);



์ฝ”๋“œ ์Šคํƒ€์ผ๋ง

  • ๋“ค์—ฌ์“ฐ๊ธฐ(Indentation)

    • ํƒญ์ด ์•„๋‹Œ 2๊ฐœ์˜ ์ŠคํŽ˜์ด์Šค๋ฅผ ๊ถŒ์žฅ. ์ ˆ๋Œ€๋กœ ํ”ผํ•ด์•ผ ํ•  ๊ฒƒ์€ ์ŠคํŽ˜์ด์Šค์™€ ํƒญ์„ ํ˜ผ์šฉํ•ด์„œ ์“ฐ๋Š” ๊ฒƒ.
    • if, while ๋“ฑ ์ค‘๊ด„ํ˜ธ ์•ˆ์— ์ข…์†๋œ ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ์ข…์†๋œ ์ฝ”๋“œ ๋ธ”๋ก์€ ์ฃผ์ธ ์ฝ”๋“œ ๋ธ”๋ก๋ณด๋‹ค ๋‘ ์นธ ๋“ค์—ฌ์“ฐ๊ธฐํ•œ๋‹ค.
      if (condition) {
        action();
      } // ์ข…์†๋œ ์ฝ”๋“œ ๋ธ”๋ก ๋งˆ์ง€๋ง‰ ์ค„์˜ ์ค‘๊ด„ํ˜ธ๋Š” ์‹œ์ž‘ํ•œ ์ค„(์—ฌ๊ธฐ์„œ๋Š” if ์•ž)๊ณผ ๋™์ผํ•œ ์œ„์น˜์— ๋†“๋Š”๋‹ค.
  • ์ด๋ฆ„ ์ง“๊ธฐ(Naming)

    • ๋ณ€์ˆ˜๋ช…์€ ๊ฐ’์˜ ๋ณธ์งˆ์ ์ธ ์˜๋ฏธ๋ฅผ ์ง€๋…€์•ผ ํ•œ๋‹ค. ๊ฐœ๋ฐœ ๋ถ„์•ผ์˜ ํ•ต์‹ฌ์„ ์ž˜ ๋ฌ˜์‚ฌํ•ด์ค„์ˆ˜๋ก, ํ•œ ๋‹จ์–ด๋กœ ํ‘œํ˜„ํ• ์ˆ˜๋ก ์ข‹๋‹ค. (๊ธˆ์œต ๊ด€๋ จ ๊ฐœ๋ฐœ์„ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด ์‚ฌ์šฉ)

      let interestRate = 0.2; //์ด์ž์œจ์ž„์„ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
    • ๋ณ€์ˆ˜์— ํ• ๋‹น๋˜๋Š” ๊ฐ’์˜ ํ˜•์‹์ด ์•„๋‹Œ, ๊ทธ ๊ฐ’์˜ ์˜๋ฏธ๊ฐ€ ๋ณ€์ˆ˜ ์ด๋ฆ„์— ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค.

      let animals = ['cat', 'dog', 'fish'];
      //targetInput๊ณผ ๊ฐ™์ด ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋ช…๋ณด๋‹ค
      //๊ฐ’์˜ ์˜๋ฏธ๋ฅผ ๋ฐ˜์˜ํ•œ animals๊ฐ€ ๋‚ซ๋‹ค.
    • ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ(collection)์ด ํ• ๋‹น๋œ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์€ ๋ณต์ˆ˜ ๋ช…์‚ฌ๊ฐ€ ์ข‹๋‹ค. ์œ„์˜ ์˜ˆ์‹œ ์ฝ”๋“œ๋กœ ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด, animalList๋ณด๋‹ค๋Š” animals๊ฐ€ ์˜๋ฏธ๋ฅผ ๋” ์ž˜ ํ‘œํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— animals๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. (๋‹จ์ˆ˜ animal์€ NO!)

    • boolean์ด ํ• ๋‹น๋œ ๋ณ€์ˆ˜๋Š” is ํ˜น์€ are์„ ๋ถ™์—ฌ์„œ ์ฐธ ํ˜น์€ ๊ฑฐ์ง“์ž„์„ ๋ถ„๋ช…ํžˆ ํ‘œํ˜„ํ•œ๋‹ค.

      let isDog = true;
      let ๊ฐ•์•„์ง€์ž…๋‹ˆ๋‹ค = true;
    • ํ•จ์ˆ˜์˜ ์ด๋ฆ„์€ ๋™์‚ฌ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค. ๊ธฐ๋Šฅ์„ ๋‹ด์€ ๋™์‚ฌ๋ฅผ ํ•จ์ˆ˜๋ช…์— ํฌํ•จํ•˜๋ฉด ์—ญํ• ์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ณ , ํ•จ์ˆ˜์˜ ์ž…๋ ฅ๊ฐ’๊ณผ ์ถœ๋ ฅ๊ฐ’, ๋‘˜ ์‚ฌ์ด์˜ ๋ณ€ํ™˜ ๊ณผ์ •์„ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฝ๋‹ค.

      let countBlocks = function() {
       // ๋ฒฝ๋Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” ํ•จ์ˆ˜์ž„์„ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      }
    • ๋ณ€์ˆ˜ ํ• ๋‹น ๊ฐ’์ด Class์ธ ๊ฒฝ์šฐ์—๋Š” ์ฃผ๋กœ ๋ณ€์ˆ˜์˜ ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์‚ฌ์šฉํ•œ๋‹ค. new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜์— ํ•œํ•ด์„œ ๋Œ€๋ฌธ์ž๋ฅผ ์“ฐ๊ธฐ๋„ ํ•œ๋‹ค. (class ์—ญํ• ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ)

      class Animal(){
      // ES6 ๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ class๊ฐ€ ํ• ๋‹น๋˜๋Š” ๋ณ€์ˆ˜๋Š” ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ ์Šต๋‹ˆ๋‹ค.
      }
      function Animal() {
      // class ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ๋  ํ•จ์ˆ˜์ด๋ฏ€๋กœ ๋Œ€๋ฌธ์ž๋กœ ์ ์Šต๋‹ˆ๋‹ค.
      }
    • ์ƒ์ˆ˜๋Š” ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ์ ๋Š”๋‹ค.

      const MAX_ITEMS_IN_QUEUE = 100;
  • ๊ธฐํ˜ธ ๋ฐ ๊ตฌ๋‘์ (Punctuation)

    • ๋ฌธ๋ฒ•์ ์œผ๋กœ ์ƒ๋žต ๊ฐ€๋Šฅํ•œ ๋•Œ์—๋„ ์ค‘๊ด„ํ˜ธ๋Š” ์ƒ๋žตํ•˜์ง€ ์•Š๋Š”๋‹ค. (for๋ฌธ์ด๋‚˜ if๋ฌธ ๋“ฑ์—์„œ ์ข…์† ์ฝ”๋“œ๊ฐ€ 1์ค„์ผ ๊ฒฝ์šฐ ์ค‘๊ด„ํ˜ธ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์ƒ๋žตํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋‘ ์จ์ค€๋‹ค.)

    • JavaScript์˜ ๋ฌธ์ž์—ด ํ‘œ์‹œ๋Š” ์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค. HTML์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํฐ๋”ฐ์˜ดํ‘œ์™€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. (ํฐ๋”ฐ์˜ดํ‘œ๋„ ๊ดœ์ฐฎ์œผ๋‚˜ ํ˜ผ์šฉ์€ NO!)
      let dog = 'dog';
      let cat = 'cat';
    • ์ค„๋ฐ”๊ฟˆ์ด ํ•„์š”ํ•œ ๋ฌธ์ž์—ด์„ ์ •์˜ํ•  ๋•Œ๋Š” ` ๋ฐฑํ‹ฑ(backtick)์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•œ๋‹ค.
      let multilineText = `this is line one
      this is line two
      this is line three`;
      // ์—”ํ„ฐ๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.
    • ์ฝ”๋“œ ์‹คํ–‰์˜ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์ธ Statement(๋ฌธ)์˜ ๋์— ์„ธ๋ฏธ์ฝœ๋ก ์„ ์‚ฌ์šฉํ•œ๋‹ค.
      alert('hi');
    • if, for, while๋ฌธ์˜ ๋์—๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ค‘๊ด„ํ˜ธ๋กœ ๋๋‚˜๋Š” Statement๋Š” ์ด๋ฏธ ์ข…๋ฃŒ๊ฐ€ ์•”์‹œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
      if (condition) {
        response();
      }
    • ํ•จ์ˆ˜ ํ‘œํ˜„์‹์˜ ๋์—๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์„ ์‚ฌ์šฉํ•œ๋‹ค.
      let greet = function () {
        alert('hi');
      };
  • ์—ฐ์‚ฐ์ž์™€ ํ‚ค์›Œ๋“œ

    • ์—„๊ฒฉํ•œ ๋น„๊ต ์—ฐ์‚ฐ์ž(strict equality, ===, !==)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    • 3ํ•ญ ์—ฐ์‚ฐ์ž(?)๋Š” ๊ฐ„๊ฒฐํ•˜๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ๊ฒฝ์šฐ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค์ง€๋งŒ ๋ฆฌํ„ด ๊ฐ’์ด ์žฅํ™ฉํ•œ ๊ฒฝ์šฐ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

      // **BAD!** 
      return (actual === expected) ? 'passed' : 'FAILED ['
        + testName + '] Expected "'+expected+'",but got '+'"'+actual+'"';
       };
    • not ์—ฐ์‚ฐ์ž('!')๋Š” ๋ฐ”๋กœ ์•ž์— ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•œ๋‹ค.

      if (!isEqual) {
  • ์งง๊ฒŒ ์“ฐ๊ธฐ

    • ์ฝ”๋“œ๋Š” ๋œป์ด ๋ถ„๋ช…ํ•˜๊ณ  ์‹คํ–‰๋˜๋Š” ํ•œ, ๋˜๋„๋ก ์งง๊ฒŒ ์“ด๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ๋  ๊ณณ์—์„œ๋Š” ๋ฐ”๋กœ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.

    • ๋ถ€์ •์˜ ์˜๋ฏธ๊ฐ€ ๋ช…ํ™•ํ•œ ๊ณณ์—๋งŒ NOT ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. if(!equalSizes || !equalValues) ์ฒ˜๋Ÿผ ๋‚จ๋ฐœํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์กฐ๊ฑด์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.

    • Boolean์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” ํ‘œํ˜„๋ฌธ์€ ๋ฐ”๋กœ returnํ•œ๋‹ค. return charSet.size > text.length; ๋น„๊ต๋ฌธ์€ ๋ฌด์กฐ๊ฑด true ํ˜น์€ false๋กœ ํ‰๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ฑด๋ฌธ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

  • ์ฝ”๋“œ ๋ฌธ์žฅ๊ณผ ๊ตฌ๋ฌธ ์‚ฌ์ด ๊ณต๊ฐ„

    • ํ•œ ๋ฒˆ์— ๋” ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด์„œ ์ค„ ๋ฐ”๊ฟˆ์€ ์ตœ์†Œ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. (์ตœ๋Œ€ ํ•œ ์นธ) ์ค„์„ ๋ฐ”๊ฟ”์•ผ ํ•  ๋•Œ์™€ ์ค„ ๋ฐ”๊ฟˆ์„ ์ž์ œํ•ด์•ผ ํ•  ๋•Œ๋ฅผ ์ž˜ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด๊ฐ€?

    • ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ตœ์†Œํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ๊ด„ํ˜ธ์™€ ๋”ฐ์˜ดํ‘œ ์‚ฌ์ด์— ๊ณต๋ฐฑ์„ ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด, ์•ž๋’ค ๋‘˜ ๋‹ค ๋„ฃ๋Š”๋‹ค. (๋‘˜ ๋‹ค ๋„ฃ์ง€ ์•Š์•„๋„ ๋จ)
      YES alert( 'I chose to put visual padding around this string' );
      NO alert( 'I only put visual padding on one side of this string');

    • ๊ฐ™์€ ๋ผ์ธ์— ๊ฐ’์„ ๋ณด๊ธฐ ์œ„ํ•ด ํ•˜๋Š” ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” ์ง€์–‘ํ•œ๋‹ค. ๋ณ€์ˆ˜๋ช…๊ณผ ๊ฐ’์„ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ถˆํ•„์š”ํ•œ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

    • ์ฝค๋งˆ ์‚ฌ์ด๋Š” ํ•œ ์นธ ๋„์–ด ์“ด๋‹ค.
      assertEqual(Math.pow(3, 2), 9, 'Math.pow squares properly');

    • ์—ฐ์‚ฐ์ž ์‚ฌ์ด๋Š” ํ•œ ์นธ ๋„์–ด ์“ด๋‹ค.
      'Failed [' + testName + ']'...
      if(actual === expected)

  • ์ฃผ์„

    • ์ฃผ์„์€ ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ž‘์„ฑํ•œ๋‹ค.
    • ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ๊ตฌ์กฐ๋กœ ์ฝ”๋“œ์˜ ๋ชฉ์ ์ด ์ •ํ™•ํžˆ ํ‘œํ˜„๋˜๋ฉด ์ฃผ์„์„ ์ ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋ฐ”๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ๊ฐ€๋…์„ฑ ์ข‹๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

  • CamelCase vs. snake_case

    • JavaScript์—์„œ๋Š” ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•  ๋•Œ Camel Casing์œผ๋กœ ์ง€์ •ํ•œ๋‹ค. (Ruby ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” Snake Casing์„ ์‚ฌ์šฉํ•œ๋‹ค.) ๋‹จ, ์ƒ์ˆ˜ ์ด๋ฆ„์„ ์ง€์„ ๋•Œ๋Š” Snake Casing์„ ์‚ฌ์šฉํ•œ๋‹ค.
      Camel Casing let camelCased = 'Used in javascript';
      Snake Casing let snake_cased = 'Used in other languages';


  • ์œ ๋ช…ํ•œ ์ฝ”๋“œ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ

์ถ”๊ฐ€

  • split()

    • String ๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•œ ๊ตฌ๋ถ„์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ž์—ด๋กœ ๋‚˜๋ˆˆ๋‹ค.
    • str.split([separator[, limit]])
    • ๋ฌธ์ž์—ด ์œ ํ˜•์˜ separator ๋‘ ๊ธ€์ž ์ด์ƒ์ผ ๊ฒฝ์šฐ ๊ทธ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ „์ฒด๊ฐ€ ์ผ์น˜ํ•ด์•ผ ๋Š์–ด์ง„๋‹ค
    • str.split('')์€ ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆŒ ๋•Œ UTF-16 ์ฝ”๋“œ ์œ ๋‹›์œผ๋กœ ๋‚˜๋ˆ„๊ฒŒ ๋˜์–ด ์จ๋กœ๊ฒŒ์ดํŠธ ํŽ˜์–ด๊ฐ€ ๋ง๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉ์— ์ฃผ์˜.
    • [...str]๊ณผ Object.assign([], str)์€ str.split('')๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ด๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.

  • indexOf()

    • ํ˜ธ์ถœํ•œ String ๊ฐ์ฒด์—์„œ ์ฃผ์–ด์ง„ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • str.indexOf(searchValue[, fromIndex])
    • fromIndex๋กœ ์ฐพ๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ์œ„์น˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • join()

    • Array์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์—ฐ๊ฒฐํ•ด ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•œ๋‹ค. arr.length๊ฐ€ 0์ด๋ผ๋ฉด, ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • arr.join([separator])
    • ์š”์†Œ๊ฐ€ undefined ๋˜๋Š” null์ด๋ฉด ๋นˆ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    • separator๋ฅผ ()๋กœ ์ง€์ •ํ•˜๋ฉด ๋ฐฐ์—ด ์‚ฌ์ด์— ์‰ผํ‘œ๊ฐ€ ์‚ฝ์ž…๋˜๋ฉฐ, ('')๋กœ ์ง€์ •ํ•˜๋ฉด ์•„๋ฌด ๋ฌธ์ž ์—†์ด ์—ฐ๊ฒฐ๋œ๋‹ค.




ใ€€

๐Ÿ“

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

0๊ฐœ์˜ ๋Œ“๊ธ€