TIL_221130_ โ“โ—โœ…๐ŸšฉJavaScript ์‹ฌํ™”_2

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

TIL

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

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


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

1. JavaScript ๊ธฐ๋ณธ ์ž๋ฃŒ(notion)_2

๊ธฐ์ดˆ ๋ฌธ๋ฒ•(1)

  • Function

    • ํ•จ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•
      const variable = function() { return 'ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•  ๊ฐ’';}
      variable(); ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ!
    • ์ผ๋ฐ˜์ ์ธ ๋ณ€์ˆ˜๋ช…์ด ์•„๋‹ ๋•Œ(Key์— '', * ๋“ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ)
      -> ๊ฐ์ฒด. ์ด ์•„๋‹ˆ๋ผ ๊ฐ์ฒด[]๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•จ
      -> let bObject = {'Hello Yunny': 'Hello', 'Whoaaaa':'whoa'}
      -> bObject['Hello Yunny']
  • Boolean ์—ฐ์‚ฐ

    • Falsy : ''(๋นˆ ๋ฌธ์ž์—ด), 0, false, null, undefined, NaN
  • ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

    • AND ์—ฐ์‚ฐ์ž(&&)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ชจ๋“  ๊ฐ’์ด Truthyํ•  ๊ฒฝ์šฐ ๋งจ ๋’ค์— ์žˆ๋Š” ๊ฐ’์ด result ๋ณ€์ˆ˜์— ํ• ๋‹น
    • OR ์—ฐ์‚ฐ์ž(||)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ๊ฐ€์žฅ ๋จผ์ € ์˜ค๋Š” Truthyํ•œ ๊ฐ’์ด name๋ณ€์ˆ˜์— ํ• ๋‹น
  • ๋ฐ˜๋ณต๋ฌธ

    • break - ์กฐ๊ฑด์— ์ƒ๊ด€์—†์ด ๋ฐ˜๋ณต๋ฌธ ์ค‘๋‹จ
      -> for(let i=0~) ๋ฐ˜๋ณต๋ฌธ์—์„œ if(i ===2) break; ํ•˜๋ฉด i๋Š” 0,1 ๊นŒ์ง€๋งŒ ์ถœ๋ ฅ

    • continue - ํ•ด๋‹น ๋ช…๋ น๋ฌธ ์ค‘๋‹จํ›„ ๋‹ค์Œ ๋‹จ๊ณ„ ์ฆ๊ฐ๋ฌธ๋ถ€ํ„ฐ ์‹คํ–‰
      -> if (i === 2) continue;
      i=0์ผ ๋•Œ 0๋ถ€ํ„ฐ 2๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ถœ๋ ฅ

    • for..of
      -> Array, Map๊ณผ ๊ฐ™์€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ(Iterable) ๊ฐ์ฒด์˜ value(์š”์†Œ)๋ฅผ ํ•˜๋‚˜์”ฉ ๋ฐ˜๋ณต(๋ฐฐ์—ด์„ ํ•˜๋‚˜์”ฉ ๋ฐ˜๋ณตํ•ด์ฃผ๋Š” ๋ฌธ๋ฒ•)

    • for..in
      -> ์„ ์–ธํ•œ ๋ณ€์ˆ˜์— ๊ฐ’์ด ์ง์ ‘ ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ณ  ์š”์†Œ์˜ key๋ฅผ ์ „๋‹ฌ


โ—

  • Object๋Š” ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด์— ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค
    • ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ
      ->

๊ธฐ์ดˆ ๋ฌธ๋ฒ•(2)

  • Function

    • Arrow function ๋ฐฉ์‹ - ์ต๋ช… ํ•จ์ˆ˜
      -> ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋ฅผ ์ผํšŒ์„ฑ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•  ๋•Œ
      ->
  • ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น

    • ํ•จ์ˆ˜์—์„œ์˜ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น
      -> const getUserName = ({name, age}) => { return name;};
  • Hoisting

    • var๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด hoisting์ด ๋ฐœ์ƒ(์‚ฌ์šฉ ์ง€์–‘)
    • let const๋Š” JS๋‚ด TDZ์˜์—ญ์— ์กด์žฌํ•ด ํ˜ธ์ด์ŠคํŒ… ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•˜๋Š” ๊ฒƒ
      -> TDZ๋Š” ์„ ์–ธ ์ „์— ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๊ธˆ์ง€
      -> ์„ ์–ธ ์ดํ›„์— ์‚ฌ์šฉํ•ด์•ผ 'ReferenceError'๊ฐ€ ์•ˆ ๋‚จ
  • spread operator (์ „๊ฐœ ๊ตฌ๋ฌธ)

    • ๊ธฐ์กด ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์˜ ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด ์™€์„œ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ(๊ธฐ์กด ๊ฐ์ฒด, ๋ฐฐ์—ด์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ)

โ—

  • forEach()

    • ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ๋ฐฐ์—ด ์š”์†Œ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์‹คํ–‰
  • map()

    • ๋ฐฐ์—ด ๋‚ด์˜ ๋ชจ๋“  ์š”์†Œ ๊ฐ๊ฐ์— ๋Œ€ํ•˜์—ฌ ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜
  • filter()

    • ์ฃผ์–ด์ง„ ํ•จ์ˆ˜์˜ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•œ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜
  • reduce()

    • ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ ๋ฆฌ๋“€์„œ (reducer) ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜

2. JavaScript ์‹ฌํ™”_2

์‹คํ–‰ ์ปจํ…์ŠคํŠธ

1) ์‹คํ–‰ ์ปจํ…์ŠคํŠธ

  • call stack
    • ์‹คํ–‰ํ•  ์ฝ”๋“œ์— ์ œ๊ณตํ•  ํ™˜๊ฒฝ ์ •๋ณด๋“ค์„ ๋ชจ์•„ ๋†“์€ ๊ฐ์ฒด
    • ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ๊ฐ„์— ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ
  • ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์— ๋‹ด๊ธฐ๋Š” ์ •๋ณด
    • VariableEnvironment
      -> ์„ ์–ธ ์‹œ์ : LexicalEnvironment์˜ snapshot
    • LexicalEnvironment
      -> VariableEnvironment์™€ ๋‚ด์šฉ์€ ๋™์ผ
      -> ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜
    • ThisBinding
    2) EnvironmentRecord(record)
  • ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ
    • ์„ ์–ธ๋ฌธ ์ž์ฒด๊ฐ€ hoisting ๋˜์–ด ์ตœ์ƒ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€ ์œ„์— ๋จผ์ € ๋งŒ๋“  ํ•จ์ˆ˜์— ์˜ํ–ฅ์„ ์ค€๋‹ค.
  • ํ•จ์ˆ˜ ํ‘œํ˜„์‹
    • ์ขŒ์ธก์˜ ๋ณ€์ˆ˜๋ช…๋งŒ hoisting ๋˜์–ด ๋’ค์— ๋งŒ๋“  ํ•จ์ˆ˜๊ฐ€ ์œ„์— ๋งŒ๋“  ํ•จ์ˆ˜์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

3) OuterEnvironmentReference(Outer)

  • ์Šค์ฝ”ํ”„ ์ฒด์ธ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ์™ธ๋ถ€ ํ™˜๊ฒฝ์˜ ์ฐธ์กฐ์ •๋ณด
  • ์Šค์ฝ”ํ”„ ์ฒด์ธ
    • ์‹๋ณ„์ž์˜ ์œ ํšจ๋ฒ”์œ„๋ฅผ ์•ˆ์—์„œ๋ถ€ํ„ฐ ๋ฐ”๊นฅ์œผ๋กœ ์ฐจ๋ก€๋กœ ๊ฒ€์ƒ‰
    • C๋ผ๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์—์„œ console.log(a)๋ฅผ ์ฐ์„ ๋•Œ
      -> a์˜ ๊ฐ’์„ record(๋‚ด๋ถ€)์—์„œ ๋จผ์ € ์ฐพ๊ณ  ์—†์œผ๋ฉด outer์— ์ ์‹œ๋œ B๋ผ๋Š” Lexical ํ™˜๊ฒฝ(record)์—์„œ ์ฐพ๊ณ  ์—†์œผ๋ฉด B์— ์ ์‹œ๋œ outer์ธ A~~~> ์ „์—ญ์—์„œ ์ฐพ๋Š”๋‹ค.

โ“

  • ์•„๋‹˜!!!

โ—

  • ์ฐธ์กฐ์นด์šดํŠธ = 0 -> Garbage Collector๊ฐ€ ์ˆ˜๊ฑฐํ•ด๊ฐ„๋‹ค!
    • ์œ„์—์„œ var a = 3๋Š” ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—(์ฐธ์กฐ ์นด์šดํŠธ๊ฐ€ 0์ด ์•„๋‹˜) Garbage Collector๊ฐ€ ์ˆ˜๊ฑฐํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ๋งŒ์•ฝ ์•„๋ž˜์—์„œ var a = 7์ด๋ผ๊ณ  ์„ ์–ธํ•˜๋ฉด
      a=3์˜ ์ฐธ์กฐ์นด์šดํŠธ๊ฐ€ 0์ด ๋˜์–ด ์ˆ˜๊ฑฐํ•ด๊ฐ„๋‹ค!

3. Modern JavaScript Tutorial_1

  • ํŠœํ† ๋ฆฌ์–ผ ์ฝ๋Š” ๋ฒ• ์•ˆ๋‚ด๋Œ€๋กœ ํŠœํ† ๋ฆฌ์–ผ ์ฝ๊ธฐ!

  • ์ฝ”์–ด์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

  • ์†Œ๊ฐœ

    • JS ์—”์ง„๋งˆ๋‹ค ํŠน์œ ์˜ ์ฝ”๋“œ ๋„ค์ž„์ด ์žˆ๋‹ค.
      ex. V8 - Chrome๊ณผ Opera์—์„œ ์“ฐ์ž„
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ
    -"use strict"
    -> ์Šคํฌ๋ฆฝํŠธ ์ „์ฒด๊ฐ€ "๋ชจ๋˜ํ•œ" ๋ฐฉ์‹์œผ๋กœ ์ž‘์šฉ
    -> ๋ฐ˜๋“œ์‹œ ์ตœ์ƒ๋‹จ์— ์œ„์น˜
    -> ์ฝ”๋“œ๋ฅผ module๋กœ ์“ฐ๋ฉด ์ž๋™์œผ๋กœ ์ ์šฉ

    • ๋Œ€๋ฌธ์ž ์ƒ์ˆ˜(const)

    • prompt

    • confirm

    • ** ๊ฑฐ๋“ญ์ œ๊ณฑ ์—ฐ์‚ฐ์ž
      -> alert( 4 ** (1/2) ); ์ œ๊ณฑ๊ทผ
      -> alert( 8 ** (1/3) ); ์„ธ์ œ๊ณฑ๊ทผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ

    • undefined๋Š” ์ˆซ์žํ˜•์œผ๋กœ ๋ณ€ํ™˜์‹œ NaN

    • label - ๋ฐ˜๋ณต๋ฌธ ์•ž์— ์ฝœ๋ก ๊ณผ ํ•จ๊ป˜ ์“ฐ์ด๋Š” ์‹๋ณ„์ž

    • switch๋ฌธ
      -> case

  • 10% ์ •๋„๋Š” ๋‹ค์‹œ ๋ฐ˜๋ณตํ•ด์„œ ๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Œ!


โœ…

Git

  • ์–ด์ œ ๋งŒ๋“  JS_A ๋ธŒ๋žœ์น˜. github์—์„œ read.me ํŒŒ์ผ์„ ์ƒ์„ฑํ›„ ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ pushํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ์–ด์ œ JS_A์ด origin์ด์–ด์„œ push๊ฐ€ ์•ˆ ๋จ
    • sourcetree์—์„œ origin/js ๋ถ€๋ถ„์„ ๋ˆ„๋ฅด๊ณ  ๋ณ‘ํ•ฉํ•˜๋‹ˆ ์ตœ๊ทผ ์ปค๋ฐ‹์ด JS_A/origin์ด ๋˜์–ด push ๊ฐ€๋Šฅํ•ด์ง!
    • ์›๊ฒฉ ์ €์žฅ์†Œ์™€ ๋กœ์ปฌ์˜ ๋‚ด์šฉ์ด ๋‹ค๋ฅผ ๋• merge or rebase

๊ณต์œ 

  • ํŒ€์›์ด getElementsByClassName์ด ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด์—ฌ์ฃผ์…จ๋‹ค.
    • getElementById๋Š” ๋ฐ˜๋ณต๋˜๋Š” ๋‚ด์šฉ์„ temp(temp_html)๋กœ ๋ถ™์ผ ๋•Œ ์ˆœ์„œ๋ฅผ ๋ถ™์ผ ํ•„์š”๊ฐ€ ์—†๋‹ค
    • getElementsByClassName๋Š”
      document.getElementsByClassName('myCards')[0].append("div") ํด๋ž˜์Šค ๋’ค์— ์ˆœ์„œ ๋ถ™์—ฌ์•ผ ํ•จ

๐Ÿšฉ

๋‚ด ์ƒ๊ฐ

  • ์˜ค๋Š˜ JS ์‹ฌํ™” ๊ฐ•์˜๋Š” ํ•œ ์ฑ•ํ„ฐ ๋“ฃ๊ณ  ํ•˜๋ฃจ์ข…์ผ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŠœํ† ๋ฆฌ์–ผ ๋ดค๋Š”๋ฐ ๋‹ค ๋ชป ๋๋ƒˆ๋‹ค.
    • ์ง„๋„ ๋„ˆ๋ฌด ๋Š๋ฆฐ ๊ฒƒ ๊ฐ™๊ณ  ์œ ๋ฃŒ ๊ฐ•์˜ ๋“ฃ๋Š” ํŒ€์›๋“ค ํ•œ ๊ฑฐ ๋ณด๋ฉด ๋‚˜๋Š” ์•„์ง๋„ ๋ชจ๋ฅด๋Š” ๊ฒŒ ๋„ˆ๋ฌด ๋งŽ์€๋ฐ.. ์‹œ๊ฐ„์€ ์™œ ์ด๋ ‡๊ฒŒ ๋นจ๋ฆฌ ๊ฐ€๋Š” ๊ฑฐ๋ƒ๊ณ ใ…œใ…œใ…œ
profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

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