[1์ฃผ์ฐจ] ์šฉ์ƒ๋‹˜ ๋ชจ์˜๋ฉด์ ‘ ํ”ผ๋“œ๋ฐฑ

์ฃผ์ œ1

  • 1. ์ฟ ํ‚ค์™€ ์„ธ์…˜์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์„ค๋ช…
    • ๋‹ต๋ณ€
      • ํ”ผ๋“œ๋ฐฑ
        • (ํ๋ฆ„๋น ๋ฅด๋‹ค๋ฉด ์ƒ‰์œผ๋กœ ํ‘œํ˜„) this๋Š” ~~, ~~, ~~ ์ด๋‹ค. ๋ง์ด๋„ˆ๋ฌด ๋น ๋ฅด๋‹ค๊ณ  ์ƒ๊ฐ
      • ์งˆ๋ฌธ2
        • ๋‹ต๋ณ€
        • ํ”ผ๋“œ๋ฐฑ

      ์ฃผ์ œ2

      • ์งˆ๋ฌธ1
        • ๋‹ต๋ณ€
        • ํ”ผ๋“œ๋ฐฑ
       
      • ์งˆ๋ฌธ1
        • ๋‹ต๋ณ€
        • ํ”ผ๋“œ๋ฐฑ

      ์ฟ ํ‚ค

      • ์ฟ ํ‚ค์˜ ๋™์ž‘ ์›๋ฆฌ
        • ์œ ํšจ๊ธฐ๊ฐ„์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
      • ์žฅ์ 
        • ์›น ์Šคํ† ๋ฆฌ์ง€์— ๋น„ํ•ด ์ €์žฅ์šฉ๋Ÿ‰์ด ์ž‘๋‹ค
        • ์ฟ ํ‚ค์™€ ํ•จ๊ป˜ ์ „์†กํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ €ํ•˜๊ฐ€ ์ผ์–ด๋‚จ
        • - XSS ๊ณต๊ฒฉ์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•˜์ง€ ์•Š์Œ
      • ๋ณด์•ˆ์ƒ์˜ ๋ฌธ์ œ
        • ์ด ๋ถ€๋ถ„์€ ๋‹ต๋ณ€ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

      ์Šคํ† ๋ฆฌ์ง€

      • ์ฃผ์˜ํ•ด์•ผ ํ•  ์ 
        • ๋กœ์ปฌ, ์„ธ์…˜ โ†’ ๋กœ์ปฌ ํŠน์ง•: ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€๊ฑฐ๋‚˜ ํ•˜์ง€ ์•Š์Œ. ๋„๋ฉ”์ธ์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋Š” ์œ ์ง€๊ฐ€ ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด์šฉ์„ ํ•  ์ˆ˜ ์—†๋‹ค
        • ์„ธ์…˜๋ณ„๋กœ ์ €์žฅ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ๋„๋ฉ”์ธ์ด๋”๋ผ๋„ ๋‹ค๋ฅธ ์„ธ์…˜์— ์žˆ์œผ๋ฉด ๋ฐ์ดํ„ฐ ์ด์šฉ ๋ถˆ๊ฐ€ โ†’ ์ข‹์€ ๋‹ต๋ณ€์ธ๋“ฏํ•จ. ์„ธ์…˜๊ณผ ๋กœ์ปฌ์— ์ฐจ์ด์— ๋Œ€ํ•ด ์ž˜ ์„ค๋ช…ํ•จ

      ๋น„๋™๊ธฐ

      ์ฝœ๋ฐฑ

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

      async/await

      • promise์™€ await ์„ ํ˜ธ?
        • await ์„ ํ˜ธ โ†’ ๋™๊ธฐ์ ์œผ๋กœ ๋ณด์ด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ฐ„๊ฒฐํ•ด์ง
      • ํ”„๋กœ๋ฏธ์Šค, await ์ฐจ์ด
        • try...catch, then...catch ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฐฉ์‹ ๋‹ฌ๋ผ์ง
      โ†’ ๊ผฌ๋ฆฌ ์งˆ๋ฌธ์„ ํ•˜๊ธฐ ์ „์— ์ง์ ‘ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹  ์ ์ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค.
      • ์ด์ „ ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•
        • promise๋Š” promise ์ฒด์ธ์œผ๋กœ ๋ฐ›๋Š”๋‹ค... ๋’ค์— ๋” ์„ธ๋ถ€ ์„ค๋ช…์„ ๋ถ™์ด๋ฉด ์ข‹์„๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
      • ์ฝ”๋“œ ์งˆ๋ฌธ
        • ๊ธธ๊ฒŒ ์ƒ๊ฐํ•  ์ผ์ด ์žˆ์„ ๋–„๋Š” ๋ฉด์ ‘๊ด€์—๊ฒŒ ์–‘ํ•ด๋ฅผ ๊ตฌํ•˜๋Š”๊ฒŒ ์ข‹์„๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.
       

      XMLHttpRequest

       

      var, let, const

      • ์ฐจ์ด์ 
        • var ์„ ์–ธ ์ดˆ๊ธฐํ™” ๋™์‹œ์— ์ด๋ฃจ์–ด์ง, let const ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๊ฐ€ ๋”ฐ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค
        • โ†’ ์กฐ๊ธˆ ๋” ์„ธ๋ถ€์ ์ธ ์„ค๋ช…์ด ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
        • โ†’
        •  

      ํด๋กœ์ €

      • ์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ํ˜„์ƒ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š”์ง€
        • ํด๋กœ์ €๋Š” ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋ฌ์„ ๋•Œ ์ž์‹ ์ด ์ƒ์„ฑ๋œ ํ™˜๊ฒฝ์„ ๊ธฐ์–ต โ†’ ์Šค์ฝ”ํ”„ ๋ฐ–์— ์„ ์–ธ์ด ๋œ ๋ณ€์ˆ˜์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ
       

      this

      • ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ค‘์ฒฉ ํ•จ์ˆ˜ ์„ ์–ธ ๋‚ด์—์„œ this ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ™์€ this๋ž‘ ๊ฐ™์€ this๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?
        • ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋Œ€ํ•˜์—ฌ ์ž˜ ์„ค๋ช…ํ•˜์˜€์Œ

      ์ด๋ฒคํŠธ๋ฃจํ”„

      • ๋™์ž‘ ์›๋ฆฌ:
        • ์ฝ”๋“œ์—์„œ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ฝœ์Šคํƒ์— ์Œ“์ž„ โ†’ ๋น„๋™๊ธฐ ์ž‘์—…์€ ์›น api์— ์œ„์ž„ โ†’ ๋Œ€๊ธฐ์ค‘์ธ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์ฝœ์Šคํƒ์— ๋„˜๊ฒจ์คŒ
        • ์ฒซ ์งˆ๋ฌธ์ด ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋์ด๋‚˜๋Š”๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.(๊ผฌ๋ฆฌ ์งˆ๋ฌธ ์š”์ฒญํ•˜๋Š”๊ฑด๊ฐ€์š”?)

      ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ๊ณผ์ •

      • ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์— ๊ณต๋ถ€ํ•˜์ง€ ์•Š์•„ ๋‹ต๋ณ€์ด ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

      ์Šคํƒ / ํ

      • ์„ ์ž…์„ ์ถœ ํ›„์ž…์„ ์ถœ
        • ์งˆ๋ฌธ๊ณผ ๋‹ค๋ฅธ ๋‹ต๋ณ€์„ ํ–ˆ์Œ
      • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ์“ฐ์ž„์ƒˆ
        • ์ฝœ์Šคํƒ ?? ์–ด๋””๊ฐ”์„๊นŒ..
        • ์ž์‹ ๊ฐ์ด ๋ถ€์กฑํ•œ ๋‹ต๋ณ€์ด์—ˆ์Šต๋‹ˆ๋‹ค.
        • ๊ฐœ์ธ์ ์œผ๋กœ ์ถ”์ž„์ƒˆ๊ฐ€ ๋งŽ์€๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.(๊ทธ, ์–ด)
       
      var value = 1000 function delay = () => { return new Promise((resolve, reject) => { console.log('1 : ',value); value = 300; setTImeout(() => { value = 150; console.log('2: ', value); resolve(value); }); } } (async () => { const data = await delay(); console.log('3 :', data); })(); value = 200 console.log('4 :', value);

      ์ „์ฒด์ ์ธ ํ”ผ๋“œ๋ฐฑ

      ๐Ÿ’ก
      ์ง๊ด€์„ฑ - ๋ฌด์Šจ ๋ง์„ ํ•˜๋ ค๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ์ดํ•ด(good), ๋งํ•˜๋ ค๋Š” ๋ฐ”๋ฅผ ๊ผฌ๋ฆฌ์งˆ๋ฌธ์„ ํ†ตํ•ด ์ดํ•ด (bad)
      ๊ตฌ์ฒด์„ฑ - ๋ฌป๋Š” ๊ฐœ๋…์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ฒŒ ์ด์•ผ๊ธฐ(good), ๋ฌป๋Š” ๊ฐœ๋…์˜ ์ผ๋ถ€๋งŒ์„ ์ด์•ผ๊ธฐํ•จ (bad)
      ์ •ํ™•์„ฑ - ์˜ฌ๋ฐ”๋ฅธ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ (good), ์ž˜๋ชป๋œ ์ •๋ณด, ์—ฌ๋Ÿฌ ๊ฐœ๋…์„ ํ˜ผํ•ฉํ•˜์—ฌ ์ด์•ผ๊ธฐํ•จ (bad)
      ํƒœ๋„ ๋ฐ ์ž์„ธ - ๋งํ•˜๋Š” ์†๋„, ๊ฐ•์•ฝ์กฐ์ ˆ, ์ž์‹ ๊ฐ, ๋ชธ์ง“์˜ ๋ณ€ํ™”๊ฐ€ ์ ์ ˆํ•˜๋‹ค (good)
      • ์ „์ฒด์ ์œผ๋กœ ์ฐจ๋ถ„ํžˆ ๋ง์”€ํ•˜์…”์„œ ํŽ˜์ด์Šค ์กฐ์ ˆ์ด ์ž˜ ๋˜์‹œ๋Š”๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.