TIL_221115 โœ…๐ŸšฉJavascript

์ •์œค์ˆ™ยท2022๋…„ 11์›” 15์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
16/192

๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ 4๊ธฐ ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ React B๋ฐ˜


๐Ÿ“’ ์˜ค๋Š˜์˜ ๊ณต๋ถ€

1. Javascript ์ด๋ก 

  • ์–ด์ œ ๋“ค์—ˆ๋˜ ์œ ํˆฝ JS ์ค‘๊ธ‰๊ฐ•์˜
    • hoisting: ๋ณ€์ˆ˜ ์„ ์–ธ์€ ์ตœ์ƒ์œ„์— ์„ ์–ธ๋œ ๊ฒƒ ์ฒ˜๋Ÿผ ํ–‰๋™
    • TDZ(Temporal Dead Zone): let const๋Š” TDZ์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ํ• ๋‹น ์ „์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
      -> ํ•จ์ˆ˜ ์•ˆ์—์„œ 'TDZ=console.log(age)' ๋’ค์— let์„ ๋‹ค์‹œ ์„ ์–ธํ•  ์ˆ˜ ์—†์Œ
    • let const: block-scoped
      • ํ•จ์ˆ˜, if๋ฌธ ๋ธ”๋ก ์•ˆ์—์„œ ์„ ์–ธ๋œ ํ•จ์ˆ˜๋Š” ๋‚ด๋ถ€์—์„œ๋งŒ ์œ ํšจ = ์ง€์—ญ ๋ณ€์ˆ˜
    • var: function-scoped
      • ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋งŒ ์ง€์—ญ ๋ณ€์ˆ˜
    • ์ƒ์„ฑ์ž ํ•จ์ˆ˜
      -> function User(name) ๋Œ€๋ฌธ์ž๋กœ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ฆ
      -> new ์—ฐ์‚ฐ์ž๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ
    • Object Method
      -> Object.assign() ๊ฐ์ฒด ๋ณต์ œ
      • (1, 2, 3)์ด๋ฉด 1์— 2, 3์ด ํ•ฉ์ณ์ง
      -> Object.keys() ํ‚ค ๋ฐฐ์—ด ๋ฐ˜ํ™˜
      -> Object.values() ๊ฐ’ ๋ฐฐ์—ด ๋ฐ˜ํ™˜
      -> Object.entries() ํ‚ค/๊ฐ’ ๋ฐฐ์—ด ๋ฐ˜ํ™˜
      -> Object.fromEntries() ํ‚ค/๊ฐ’ ๋ฐฐ์—ด์„ ๊ฐ์ฒด๋กœ
    • Symbol
      -> ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งŒ๋“ค์–ด ๋†“์€ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋ฉด์„œ method ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
      -> console.log(`His ${key} is ${user[key]}.`)
      value๋Š” ${value}๋กœ ํ•˜๋ฉด undefiend ๋‚˜์˜ด

2. Programmers

  • Lv0 ๋‹จ๊ณ„
    • ๊ฐ๋„๊ธฐ ๋ฌธ์ œ ๋‹ค์‹œ ํ’€๊ธฐ
      -> else if ์‚ฌ์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค
      <๋‹ค๋ฅธ ํ’€์ด>
      -> ? : ์“ธ ๋•Œ ์ข€ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์“ฐ๋„ค! ๋‚˜๋Š” if๋ฌธ ์“ฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ด„ํ˜ธ๋„ ๋ง‰ ์จ์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋˜ ๊ฒƒ ๊ฐ™์Œ!
    • ์ง์ˆ˜์˜ ํ•ฉ
      -> for, if, += ์ด์šฉํ•ด์„œ ํ’€์—ˆ์Œ
      <๋‹ค๋ฅธ ํ’€์ด>
      -> ํ•ฉ์„ ๋‹ด์„ ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๊ธฐ
      -> ์ง์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฑฐ๋‹ˆ for๋ฌธ์—์„œ i+=2 ์„ค์ •ํ•˜๋ฉด
      if(i%2-===0) ์“ธ ํ•„์š” ์—†์Œ
    • ์–‘๊ผฌ์น˜
      -> ๋ฐฐ๊ณ ํŒŒ์„œ ๋ˆŒ๋ €๋Š”๋ฐ ๊ธˆ๋ฐฉ ์ž˜ ํ’€๋ ธ์Œ
      -> ์Œ๋ฃŒ์ˆ˜ ๊ฐœ์ˆ˜์—์„œ ์„œ๋น„์Šค ๊ฐœ์ˆ˜๋ฅผ ๋นผ๊ณ  ๊ณ„์‚ฐํ•จ

3. SP_์›น ํผ๋ธ”๋ฆฌ์‹ฑ ๊ฐ•์˜

  • 2์ฃผ์ฐจ
    • <lable> ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์ •ํ™•ํžˆ ๋ˆ„๋ฅด์ง€ ์•Š์•„๋„ ํ•ด๋‹น ๋ถ€๋ถ„์„ ๋ˆ„๋ฅด๋ฉด ์ฒดํฌ๊ฐ€ ๋จ!
    • preventDefault() submitํ•  ๋•Œ ์ƒˆ๋กœ๊ณ ์นจ์„ ๋ง‰์•„์คŒ
    • ์•ž์— !!๋ถ™์—ฌ์ฃผ๋ฉด ๊ฐ’์ด Boolean์œผ๋กœ ๋ณ€ํ™˜
    • ๋ฉ”์ธ ๋ฐ•์Šค ์•ˆ์˜ ์š”์†Œ๋“ค ์œ„์น˜
      -> ๋ฉ”์ธ ๋ฐ•์Šค์˜ position์„ absolute / relative๋กœ ์ •ํ•ด์ค€๋‹ค.
      -> ํ•˜์œ„ ์š”์†Œ์˜ positon๋„ ์ •ํ•œ ๋‹ค์Œ(๋ณดํ†ต absolute ) top, right ๋“ฑ์— ๊ฐ’์„ ์ค˜์„œ ์œ„์น˜๋ฅผ ์ •ํ•ด์ค€๋‹ค.
      ex. top:0, bottom:0 ๋ฉ”์ธ ๋ฐ•์Šค ์•ˆ์—์„œ ๋†’์ด๋ฅผ 100%๋กœ ์ฐจ์ง€ํ•œ๋‹ค.
    • ์•„์ด์ฝ˜์ด ๋ณด์ด์งˆ ์•Š์•„์„œ ํ˜„์žฌ ๋„ค์ด๋ฒ„ ํŽ˜์ด์ง€์˜ ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€ ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  background-size, ๊ฐ ์•„์ด์ฝ˜ background-position๋ฅผ ๋ณ€๊ฒฝํ•˜๋‹ˆ ํ•ด๊ฒฐ!
    • display: table ์•ˆ์˜ ๋‚ด์šฉ์€ table-cell๋กœ ํ•ด์ฃผ๋ฉด ๋‚ด๋ถ€ ์š”์†Œ๊ฐ€ ๊ท ๋“ฑํ•˜๊ฒŒ ์ •๋ ฌ ๋œ๋‹ค.
    • ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด ์ฐฝ ๋งŒ๋“ค๊ธฐ ์ˆ™์ œ ๋‹ค์‹œ ํ•ด ๋ณด๊ธฐ!!!

4. Button & Input button

  • form์˜ ์ œ์ถœ ๋ฒ„ํŠผ์— ์ด๋ฏธ์ง€ ๋„ฃ๊ธฐ
    • Button -> img ํƒœ๊ทธ๋ฅผ ์ž์‹ ํƒœ๊ทธ๋กœ ์‚ฌ์šฉ
    • Input -> css์˜ background-image ์‚ฌ์šฉ

    โญ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ด๋ฏธ์ง€๋Š” img ํƒœ๊ทธ ์‚ฌ์šฉ

  • Button
    • ํ•˜์œ„ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด ๋””์ž์ธ ์ž์œ ๋„๊ฐ€ ๋†’๋‹ค.
      -><button> ์ด๊ณณ <span>ํด๋ฆญ</span> ํ•˜๊ธฐ </button>
      -> span๋ถ€๋ถ„๋งŒ css๋กœ ์ƒ‰ ๋ณ€๊ฒฝ

โœ…

์ฆ๊ฐ์—ฐ์‚ฐ์ž ์ดํ•ดํ•˜๊ธฐ

  • ++์˜ ์œ„์น˜์— ๋”ฐ๋ฅธ ๊ฐ’ ๋„์ถœ

let a = 10;
let b = a++ + 5;
let c = b--;

let i = 1;
let j = i++ + 1;
let k = ++i + 1;

  • ๊ธฐ์ดˆ ๊ฐ•์˜ ๋“ค์„ ๋• '๊ทธ๋ ‡๊ตฌ๋‚˜'ํ•˜๊ณ  ๋„˜์–ด๊ฐ”๋Š”๋ฐ ์˜ค๋Š˜ ํŒ€์›๋ถ„์ด ์ด๋ ‡๊ฒŒ ๋ฌธ์ œ๋ฅผ ๋‚ด์ฃผ์‹œ๋‹ˆ๊นŒ ๋‚ด๊ฐ€ ์ดํ•ด๋ฅผ ์ถฉ๋ถ„ํžˆ ๋ชป ํ–ˆ๋‹ค๋Š” ๊ฑธ ๊นจ๋‹ฌ์•˜์Œ!
    • ์ €๋ ‡๊ฒŒ ์˜ˆ์‹œ ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ๋‚˜๋‹ˆ ์ดํ•ด๊ฐ€ ํ™•์‹คํžˆ ๋๋‹ค!
    • ์•ž์œผ๋กœ ์ ˆ๋Œ€ '๊ธ€์ฟ ๋‚˜ใ…Ž'๋กœ ๋„˜์–ด๊ฐ€์ง€ ๋ง๊ณ  ๋ฌด์กฐ๊ฑด ์˜ˆ์‹œ๋ฌธ์ œ๊นŒ์ง€ ํ’€๊ณ  ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ธฐ!!!

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํ‘ธ๋Š” ๋ฐฉ๋ฒ•

  • ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘ธ๋Š” ๋ฐฉ๋ฒ• ๋จผ์ € ์ฐพ์ง€ ๋ง ๊ฒƒ
    • ์•ˆ ํ‘ผ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฟ์ด์„œ ํ•จ๊ป˜ ํ’€์–ด๋ณด๋ฉฐ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ธฐ
    • ๊ฐ€๋Šฅํ•œ ์ž์„ธํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด์„œ ์ž‘๋™ ์›๋ฆฌ ์ดํ•ดํ•˜๊ธฐ
    • reduce ๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋” ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋‚ด๊ฐ€ for, while๋ฌธ ๋“ฑ์„ ํ™œ์šฉํ•ด ์ฝ”๋“œ์™€ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•œ ๋‹ค์Œ ๋ฐฐ์›Œ๋„ ๋œ๋‹ค!!

๐Ÿšฉ

'์™œ?' ์ƒ๊ฐํ•˜๊ธฐ

  • miniํŒ€์›๋“ค์ด button, a, input button์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์ •๋ฆฌ๋œ ๊ธ€์„ ๊ณต์œ ํ•ด์คฌ๋‹ค.
    • mini projectํ•  ๋•Œ ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒผ์—ˆ๋Š”๋ฐ ๋”ฐ๋กœ ์ •๋ฆฌํ•  ์—ฌ์œ ๊ฐ€ ์—†์–ด์„œ ์ง€๋‚˜์ณค๋‹ค.
    • ์•„์นจ์— JS ์ด๋ก  ๊ณต๋ถ€ ํ•˜๋‹ค๊ฐ€ ๊ณต์œ ๋œ ๊ธ€์„ ๋ดค๋Š”๋ฐ ์ˆœ๊ฐ„ ์ด์ „์— ํ–ˆ๋˜ ๊ฑธ ๋Œ์•„๋ณด๋ฉฐ "์™œ?"๋ฅผ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ๊ทธ์ € ์ƒˆ๋กœ์šด ๊ฑธ ๋จธ๋ฆฟ ์†์— ์ง‘์–ด ๋„ฃ๋Š” ๊ฒƒ์—๋งŒ ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€ ์‹ถ์—ˆ๋‹ค.
    • ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฐ•์˜๊ฐ€ ์žˆ์œผ๋ฉด "์ผ๋‹จ ๋‹ค ๋“ฃ๊ณ  ๋ณด์ž" ํ•˜๋Š” ์Šต๊ด€์„ ๋ฒ„๋ ค์•ผ ํ•œ๋‹ค. 5๋ถ„์งœ๋ฆฌ๋ฅผ 50๋ถ„๊ฐ„ ๋ณด๋”๋ผ๋„ ๊ทธ ์‹œ๊ฐ„ ๋™์•ˆ ๊ณ„์† ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•˜๊ณ  "์™œ ์ด๋ ‡๊ฒŒ ํ•œ ๊ฑธ๊นŒ, ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์–ด๋–จ๊นŒ?"๋ผ๋Š” ์งˆ๋ฌธ์„ ๊ณ„์† ๋˜์ง€๊ธฐ
  • ์š”์ฆ˜ ๋ณต์Šต์ด ๋งŽ์ด ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค.
    • ํ•ด์•ผ ํ•  ๊ฒŒ ๋งŽ์€ ๊ฒƒ๋„ ๋งž์ง€๋งŒ ๋‚ด๊ฐ€ TIL์— ์ •๋ฆฌํ•œ ๋ถ€๋ถ„์„ ๋ณด๋ฉฐ ๋ณต์Šตํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ผญ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
    • '๋‚ด ๊ฒƒ'์œผ๋กœ ๋งŒ๋“ค๊ธฐ๋ฅผ ์•ˆ ํ•˜๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋‚จ์ง€ ์•Š๋Š”๋‹ค.
profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

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