All
React λ°μ΄ν° λ°μΈλ©
React λ λ¨λ°©ν₯ λ°μ΄ν° λ°μΈλ©μ ν©λλ€. λ°μ΄ν° λ°μΈλ©μ΄λ? νλ©΄μ 보μ΄λ λ°μ΄ν°μ λΈλΌμ°μ λ©λͺ¨λ¦¬μ μλ λ°μ΄ν°λ₯Ό μΌμΉ μν€λ κ²μ λ§ν©λλ€. MVC μμ View(νλ©΄μ 보μ΄λ λ°μ΄ν°, HTML) Model(λΈλΌμ°μ λ©λͺ¨λ¦¬μ μλ λ°μ΄ν°, JS) μ ν΄λΉλ©λλ€. λ°μ΄ν° λ°μΈλ©μ μλ°©ν₯κ³Ό λ¨λ°©ν₯μΌλ‘ λλ©λλ€. λ¨λ°©ν₯ λ°μ΄ν° λ°μΈλ© νμͺ½ λ°©ν₯μΌλ‘λ§ μ μ΄κ° κ°λ₯ν κ²μ μλ―Έν©λλ€. JS(Model) μμλ νλ©΄μ 보μ΄λ λ°μ΄ν°λ₯Ό μμ ν μ μμ΅λλ€. κ·Έλ¬λ μ¬μ©μλ νλ©΄μμ κ°μ λ³κ²½ν μλ μμ§λ§ JS μ μλ λ°μ΄ν°λ₯Ό μμ ν μ μμ΅λλ€. λλ¬Έμ νλ©΄μμ λ³κ²½λ κ°μ κ°μ§ν΄μ JS λ₯Ό μμ ν΄μΌ ν©λλ€. React μ κ²½μ° state κ° λ³κ²½μ΄ λλ©΄ set μΌλ‘ κ°μ λ°κΏ μ£Όλ μμ μ ν΄μΌ ν©λλ€...
JS μ μ¬λ°°μ΄κ³Ό λ°°μ΄μ μ°¨μ΄μ
μ μ¬ λ°°μ΄κ³Ό λ°°μ΄μ μ΄λ»κ² λ€λ₯ΌκΉ? μ μ¬ λ°°μ΄ νν μλ λ³μλ€μ μΆλ ₯ν΄λ³΄λ©΄ λͺ¨λ λ°°μ΄κ³Ό ννκ° κ°μ΅λλ€. νμ§λ§ μ§μ§ λ°°μ΄μ array λΏμ λλ€. λΈλΌμ°μ μμ λ°μ΄ν°λ₯Ό λκ²¨μ€ λ λ°°μ΄μ²λΌ 보μ΄λ κ°μ²΄λ₯Ό λ겨μ€λλ€. μ΄κ²μ μ μ¬ λ°°μ΄μ΄λΌκ³ ν©λλ€. let array = [1, 2, 3]; // [1, 2, 3] let nodes = document.querySelectorAll('div'); // NodeList [div, div, div, div, div, ...] let els = document.body.children; // HTMLCollection [noscript, link, div, script, ...] Array.isArray() λ©μλλ‘ array μΈμ§ νμΈν μ μμ΅λλ€. Array..

github pages λ‘ λ°°ν¬μ react-router μ€μ feat. λ°°ν¬νλλ° ν° νλ©΄λ§ λμ¬ λ
λ‘컬μμλ μ μ€νλλ νλ‘μ νΈκ° github pages λ‘ λ°°ν¬ ν νμ νλ©΄λ§ λμ¨λ€λ©΄? μμΈ μλ 곡μ λ¬Έμλ₯Ό 보면 CRA μΉ, μ±μ κΈ°λ³Έμ μΌλ‘ μλ² λ£¨νΈμμ νΈμ€ν λλ€κ³ κ°μ νμ¬ λΉλλ©λλ€. λλ¬Έμ λΉλλ₯Ό νκ² λλ©΄ νλ‘μ νΈλ https://leeseul-moon.github.io/todo_list/ μ μ‘΄μ¬ν©λλ€. (todo_list λ νλ‘μ νΈ ν΄λ) νμ§λ§ λΌμ°ν°λ μ κ° μ μμ±ν κ²μ λ°λΌ https://leeseul-moon.github.io/ λ‘ μ΄λμν΅λλ€. νλ‘μ νΈ μμΉμ λΌμ°ν°κ° κ°λ¦¬ν€λ μμΉκ° λ€λ₯΄κΈ° λλ¬Έμ λΌμ°ν°κ° μ λλ‘ μλνμ§ μμ΅λλ€. ν΄κ²° λΌμ°ν°μ κΈ°λ³Έ URL μ΅μ μ μ£Όμ΄ / κ° μλ /todo_list/ λ‘ μ΄λμν΅λλ€. package.json μ 5λ² μ€ heme..

React νλ‘μ νΈ GitHub Pages λ°°ν¬νκΈ°
https://github.com/ λ¨Όμ μ μ¬μ΄νΈμμ μλ‘μ΄ Repository λ₯Ό λ§λλλ€. νμ κ°μ μ ν΄μΌ λ§λ€ μ μμ΅λλ€. Repository λ©λ΄μ λ€μ΄κ°λ©΄ λ Ήμμ New λ²νΌμ΄ μμ΅λλ€. ν΄λ¦ν΄μ μ΄λ¦μ μμ±νκ³ public μΌλ‘ λ§λ€μ΄ μ€λλ€. μμ±μ νκ³ λλ©΄ λ°©κΈ λ§λ Repo λ₯Ό ν΄λ¦ν΄μ λ€μ΄κ°λλ€. κ·ΈλΌ μλμ κ°μ΄ λ¨λλ° μ¬κΈ°μ λ Ήμμ Code λ₯Ό ν΄λ¦νμ¬ Https νμ κ²½λ‘λ₯Ό 볡μ¬ν©λλ€. ν°λ―Έλμ μΌλλ€. μμμ λ§λ κΉν Repo μ μ°κ²°ν νλ‘μ νΈ ν΄λλ‘ μ΄λν©λλ€. cd git remote add origin μ΄λν νμ μμ κ°μ΄ μ λ ₯ν©λλ€. λΆλΆμλ μκΉ λ³΅μ¬ν github μ repo μ£Όμλ₯Ό λ£μ΄ μ€λλ€. μλ¬΄λ° μ€λ₯ λ©μμ§κ° λ¨μ§ μλλ€λ©΄ μ μ°κ²°λ κ²λλ€. gi..

220814~220820 3μ£Όμ°¨
1. React μ£Όμ 컨μ κ³΅λΆ λλ¦Όμ½λ© 리μ‘νΈ κ°μλ₯Ό λ€μΌλ©° YouTube clone μ½λ© (μ νλΈ API νμ©) π λ³΅μ΅ νμ! νΌμμ λ€μ λ§λ€κΈ° νλ¦ μ΄ν΄λ λμ§λ§, open APIλ₯Ό νμ©νλ κ²μ΄ μ΅μνμ§ μμ μ΄λ ΅λ€. API Key λ μΈλΆλ‘ λ ΈμΆλμ§ μλλ‘ .env μ λ£κ³ κ΄λ¦¬ν΄μΌ νλ€. μλΉμ€ κ΄λ ¨ λ‘μ§μ λ°λ‘ κ΄λ¦¬ν΄μΌ νλ€. Dom κ°λ κ³΅λΆ μ°Έκ³ μλ£ π https://wit.nts-corp.com/2019/02/14/5522 React 곡μ λ¬Έμλ‘ class component μ function component κ³΅λΆ λ¦¬μ‘νΈ κ³΅μ λ¬Έμ main concepts 2. React κ΄λ ¨ λΌμ΄λΈλ¬λ¦¬ κ³΅λΆ μΊ νμμ μ 곡λ νμ΅ μλ£λ₯Ό λ³΄κ³ redux 곡λΆ. todo list λ₯Ό redux du..
React Component
Component μ μ μ»΄ν¬λνΈλ UIλ₯Ό μ¬μ¬μ© κ°λ₯ν κ°λ³μ μΈ μ‘°κ°μΌλ‘ λλ κ²μ λ§ν©λλ€. μ»΄ν¬λνΈλ React μ리먼νΈλ₯Ό λ°ννλλ°, μ리먼νΈλ νλ©΄μ νμν λ΄μ©μ κΈ°μ νλ React μ κ°μ₯ μμ λ¨μμ λλ€. 리μ‘νΈλ μ»΄ν¬λνΈλ€μ μ§ν©μ΄λΌκ³ ν μ μμ΅λλ€. μ»΄ν¬λνΈ λμ μ¬νμ©μ±μ λμ΄κ³ μ μ§λ³΄μλ₯Ό μ©μ΄νκ² ν μ μμ΅λλ€. μλνλ©΄ μ»΄ν¬λνΈλ λ 립μ μ΄κ³ κ³ λ¦½λμ΄μκ³ μ¬μ¬μ©μ΄ κ°λ₯νκΈ° λλ¬Έμ λλ€. μ»΄ν¬λνΈλ ν¨μν μ»΄ν¬λνΈμ ν΄λμ€ν μ»΄ν¬λνΈλ‘ λλ μ§λλ€. ν¨μν μ»΄ν¬λνΈλ μλμ κ°μ΄ μκ²Όμ΅λλ€. function Welcome(props) { return Hello, {props.name}; } ν΄λμ€ν μ»΄ν¬λνΈλ μλμ κ°μ΄ μκ²Όμ΅λλ€. class Welcome extends React.C..

React.memo μ¨λ μ»΄ν¬λνΈ κ³μ λ λλ§ λ¨... -> ν΄κ²°!βπ» feat. useMemo, useCallback
λΆνμν λ λλ§μ μ νκ³ μΆλ€..! μλ‘ μ΄ κΉλλ€. λ°μμ λΆλ€μ μλλ‘ μμ λ΄λ €μ λ¬Έμ μ , μμΈμ? ν΄κ²°! μ΄ λΆλΆλ§ 보μΈμ! 리μ‘νΈ κ³΅λΆ 5μΌμ°¨μ μ΄μ κΉμ§ λ°°μ΄ κ²μ μ€μ΅νκΈ° μν΄ Habit Tracker λ₯Ό λ§λ€μλ€. μ΅κ΄μ μΆκ°ν μ μκ³ μμ +, - λ²νΌμΌλ‘ μΉ΄μ΄νΈλ₯Ό μμ ν μ μλ€. 맨 μμ Habit Tracker μ μ«μλ μ΅κ΄ 리μ€νΈ μ€ μ²΄ν¬κ° λ κ²λ€μ κ°―μλ€. μΈ νλͺ© λ€ 0μ΄ μλλ μ«μ 3μ΄ λμ¨λ€. μ΄μ΄μ΄μ΄ λ¨μν μ΅κ΄ μΆμ κΈ°(?) π ν΄λμ€ μ»΄ν¬λνΈλ‘ ν΄λΉ νΈλ 컀 λ§λλ μΈκ° 2λ°°μμΌλ‘ λ³΄κ³ νΌμμ ν¨μν μ»΄ν¬λνΈλ‘ λ§λ€μ΄ λ³Έ κ±°λΌ μ’ ν·κ°λ Έλ€. μκ°λ³΄λ€ μκ°μ΄ λ κ±Έλ Έλ€. κ·Όλ° μ΄κ±° λ§λλ κ²λ³΄λ€ React.memo 곡λΆνλλ° μκ° λ κ±Έλ¦Ό γ 리μ‘νΈ μ»¨μ μ λ¨μνλ€. ..
React JSX λ?
JSX μ μ JSX λ JavaScript λ₯Ό νμ₯ν λ¬Έλ²μ λλ€. JSX νμμΌλ‘ μμ±ν μ½λλ λΈλΌμ°μ μμ μ€νλκΈ° μ , λ°λ²¨ Babel μ μ΄μ©ν΄ JSXλ₯Ό React.createElement() νΈμΆλ‘ μ»΄νμΌλ©λλ€. μ¦, JSX λ νΈνκ² React 'element' λ₯Ό μμ±νκΈ° μν΄ μ¬μ©ν©λλ€. const element = ( Hello, world! ); μμ μ½λκ° JSX λ¬Έλ²μΌλ‘ μμ±ν κ²μ λλ€. μ΄ μ½λλ μ»΄νμΌ ν μλμ κ°μ΄ λ³κ²½λ©λλ€. μλμ μ½λλ React μ리먼νΈμ λλ€. React λ μ΄ κ°μ²΄λ₯Ό μ½μ΄μ DOMμ ꡬμ±νκ³ μ΅μ μνλ‘ μ μ§νλ λ° μ¬μ©ν©λλ€. const element = React.createElement( 'h1', {className: 'greeting'}, '..

220807~220813 2μ£Όμ°¨
μκ°μ΄ λ―ΈμΉ λ―μ΄ λΉ¨λ¦¬ κ°λ€. μ΄λ² μ£Όμ°¨λ μκ³ λ¦¬μ¦ μ£Όμ°¨ + 리μ‘νΈ μ λ¬Έ μ£Όμ°¨μλ€. μΌ-λͺ©μ μκ³ λ¦¬μ¦ λ¬Έμ νμ΄. κΈμμΌλΆν°λ 리μ‘νΈ κ³΅λΆ μμ! π» μ λ² μ£Όμ κ³ννλ μ΄λ² μ£Όμ λͺ©ν κΉκ³Ό κΉν κ³΅λΆ Git μΈκ°μ 보며 μ 체μ μΌλ‘ μ΄λ€ κΈ°λ₯μ΄ μκ³ μ΄λ»κ² μ°λ κ²μΈμ§λ μμμ§λ§, κ·Έκ±Έ μ€μ λ‘ νμ νλ©° μ°μ§λ λͺ»νκ² λ€. μΈκ°μ μ§μμ μ½κ³ λΉ λ₯΄κ² μ»μ μ μμ§λ§ κ·Έλ§νΌ κΈ°μ΅μ νλ°μ±λ κ°νλ€. λλ¬Έμ κΈ°λ‘νμ§ μμΌλ©΄ λͺ¨λ μ¬λΌμ§λ€. π₯ κ·Έκ±Έ μλ©΄μλ κΈ°λ‘νλ©° 곡λΆνμ§ λͺ»ν κ²μ, μ‘°κΈν¨ λλ¬Έμ΄λ€. μ무λλ κΈ°λ‘νλ©° 곡λΆνλ©΄ μκ°μ΄ 2λ°° μ΄μ λ λ€. κ·Έλ¦¬κ³ λΉμ₯ μΈ μ§μμ΄ μλλ€ λ³΄λ μ€μμ±μ μμ§λ§, νμμ±μ λ¨μ΄μ§λ€. λλ¬Έμ 1μ£Ό μ°¨μ νλ‘μ νΈλ₯Ό νλ©° κ°μ₯ νμνλ λΆλΆλ€μ λ¨Όμ μ 리νλ € νλ€. λ€μ ..
JS ꡬ쑰λΆν΄ ν λΉ
ꡬ쑰 λΆν΄ ν λΉ Destructuring Assignment κ°μ²΄λ λ°°μ΄μ μ μ₯λ λ°μ΄ν° μ μ²΄κ° μλ μΌλΆλ§ νμν κ²½μ°μ κ°μ²΄λ λ°°μ΄μ λ³μλ‘ 'λΆν΄’ν μ μκ² ν΄μ£Όλ νΉλ³ν λ¬Έλ²μΈ ꡬ쑰 λΆν΄ ν λΉμ μ¬μ©ν μ μμ΅λλ€. κ°μ²΄ ꡬ쑰λΆν΄ ν λΉ // μΌλ°μ μΈ κ°μ²΄ μμ± μ κ·Ό const user = {name: "μ§μ§", age: 10}; console.log(user.name); // μ§μ§ console.log(user.age); // 10 // ꡬ쑰λΆν΄ ν λΉ μ¬μ© β const { name, age } = user; console.log(name); // μ§μ§ console.log(age); // 10 ꡬ쑰 λΆν΄λ₯Ό μ¬μ©νλ©΄ λ°μ΄ν°μ μ κ·ΌνκΈ° νΈν©λλ€. κ·Έλ¬λ ν€ κ°μΌλ‘ λΆλ¬μ¨ κ²μ΄κΈ°μ name μ΄ μ..
JS μ€ν 컨ν μ€νΈμ μ½ μ€ν
https://medium.com/sjk5766/call-stack%EA%B3%BC-execution-context-%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90-3c877072db79 Call Stackκ³Ό Execution Context λ₯Ό μμ보μ μ΄ κΈμμ Call Stackκ³Ό Execution Contextμ λν΄ λ€λ£Ήλλ€. κ° μ©μ΄λ νκ΅μ΄λ‘ ν΄μνμ§ μκ³ μμ΄ κ·Έλλ‘ νκΈ°ν©λλ€. medium.com μ λ§ν¬λ₯Ό μ°Έκ³ νμ¬ μ κ° μ΄ν΄ν λΆλΆλ§ μ μλλ‘ μ 리νμ΅λλ€. μ λ§ν¬λ₯Ό 보μλ©΄ λ μμΈνκ² κ·Έλ¦Όκ³Ό ν¨κ» μ 보λ₯Ό μ»μ μ μμ΅λλ€. μ€ν 컨ν μ€νΈ Execution context μ€ν 컨ν μ€νΈλ μλ°μ€ν¬λ¦½νΈ μ½λκ° μ€νλλ νκ²½μ λ§ν©λλ€. ν¬κ² 2κ°μ§λ‘ λλ©..
JS νΈμ΄μ€ν κ³Ό TDZ
νΈμ΄μ€ν hoisting μλ°μ€ν¬λ¦½νΈ μμ§μ μ½λλ₯Ό μ€ννκΈ° μ μ½λ μ 체λ₯Ό μ€μΊνλ©΄μ νμν λ° κ΅¬λΆνλ κ³Όμ μ κ±°μΉλλ° μ΄ κ³Όμ μμ λ³μ, ν¨μ, ν΄λμ€ λ± λͺ¨λ μ μΈμ μλ‘ λμ΄ μ¬λ¦½λλ€. μΈν°ν리ν°κ° λ³μμ ν¨μμ λ©λͺ¨λ¦¬ 곡κ°μ μ μΈ μ μ 미리 ν λΉνλ κ²μ μλ―Έν©λλ€. var μ κ²½μ° νΈμ΄μ€ν μ undefined λ‘ λ³μλ₯Ό μ΄κΈ°ν νμ§λ§, let κ³Ό const λ³μλ μ΄κΈ°ν λμ§ μμ΅λλ€. λλ¬Έμ μλμ κ°μ μ½λ(1) κ° κ°λ₯ν©λλ€. κ·Έλ¬λ μ μΈλΆλ§ λμ΄μ¬λ € λμ κ²μ΄κΈ°μ, (2) μ½λμ²λΌ ν λΉλ κ°μ κ°μ Έ μ€λ κ²μ λΆκ°λ₯ ν©λλ€. add(1, 3); // (1) ν¨μ μ μΈλ³΄λ€ μμ μμ§λ§ μ€λ₯ λμ§ μκ³ μ€νλ©λλ€. console.log(a); // (2) μλ¬. ν λΉλμ§ μμ κ²μ μΆλ ₯..
2μ£Όμ°¨ μ€μ΅ κ³Όμ - μλ¬λλ μ΄μ μ€λͺ
let b = 1; function hi() { const a = 1; let b = 100; b++; console.log(a, b); } // console.log(a); // ReferenceError: a is not defined // μ μ μ€μ½νμμ λ‘컬 μ€μ½νμ λ³μλ₯Ό μ°Έμ‘°ν μ μμ΅λλ€. // h1() μμμ μΆλ ₯νλ©΄ κ°μ΄ μ λμ΅λλ€. console.log(b); // 1 hi(); // 1, 101 console.log(b); // 1 μ€μ½νμ κ°λ μ μκ³ μλ€λ©΄ μ½κ² ν μ μλ μ€μ΅ κ³Όμ μμ΅λλ€. μ°Έκ³ https://lazygay.tistory.com/17 JS μ€μ½νμ μ€μ½ν μ²΄μΈ μ€μ½ν Scope μ€μ½νλ μλ³μ(λ³μ, ν¨μ, ν΄λμ€ μ΄λ¦) μ κ·Ό κ·μΉμ λ°λ₯Έ μ ν¨ λ²μμ λλ€. ..
JS μ€μ½νμ μ€μ½ν 체μΈ
μ€μ½ν Scope μ€μ½νλ μλ³μ(λ³μ, ν¨μ, ν΄λμ€ μ΄λ¦) μ κ·Ό κ·μΉμ λ°λ₯Έ μ ν¨ λ²μμ λλ€. μ¦, κ°λ¨νκ² λ³μλ₯Ό μ°Έμ‘°ν μ μλ μ ν¨ν λ²μλΌκ³ μκ°νλ©΄ λ©λλ€. μ€μ½νλ λΈλ { } νΉμ ν¨μμ μν΄ λλ μ§λλ€. (λΈλμ΄λΌ νλ©΄, if(){}, for(){} ... λ±λ ν¬ν¨ν©λλ€.) μλ μμλ₯Ό 보면, λΈλ μμμλ λΈλ λ°μ μλ k λ λΈλ μμ μλ x λ μ μΆλ ₯λ©λλ€. κ·Έλ¬λ λΈλ λ°μμ λΈλ μμ μλ x λ₯Ό μΆλ ₯νλ €κ³ νλ©΄ μλ¬κ° λ°μν©λλ€. ν¨μ λ°μμ μ μλ k λ₯Ό μ μ λ³μ, μ μ μ€μ½ν ( μ 체μμ μ κ·Ό μ ν¨) ν¨μ λ΄μμ μ μλ x λ₯Ό μ§μ λ³μ, μ§μ μ€μ½ν λΌκ³ ν©λλ€. (μ§μ λ΄μμλ§ μ κ·Ό μ ν¨) λ°(μ μ) μμλ μ(μ§μ)μ λ³μλ₯Ό μ°Έμ‘°ν μ μμ§λ§, μ(μ§μ)μμ..
JS Equality operators == === != !==
μλ°μ€ν¬λ¦½νΈμμ κ°μ΄ κ°μμ§ μλμ§λ₯Ό λΉκ΅ν λ μ¬μ©νλ λμΌ μ°μ°μλ₯Ό μμλ³΄κ² μ΅λλ€. == : κ°μ΄ κ°μ === : κ°κ³Ό νμ λ λ€ κ°μ != : κ°μ΄ λ€λ¦ !== : κ°κ³Ό νμ λ μ€μ νλλ§ λ¬λΌλ λ€λ¦ κΈ°λ³Έ μλ£ν μμμ λλ€. console.log(1 == '1'); // true console.log(1 === '1'); // false console.log(1 != '1'); // π false console.log(1 != 1); // ππ false console.log(1 !== '1'); // true κ°μ κ°μ§λ§ νμ μ΄ λ€λ¦ console.log(1 !== 2); // true κ°μ λ€λ₯΄μ§λ§ νμ μ΄ κ°μ console.log(1 !== 1); // πππ false μ²μμλ != ..
JS undefined κ³Ό null λΉκ΅
undefined κ³Ό null μ λ λ€ ν ν λΉ μνλ₯Ό λ§νλλ°, λ―Έλ¬ν μ°¨μ΄κ° μμ΅λλ€. let item; // κ°μ΄ μμ§ ν λΉ λμ§ μμ μν console.log(item); // κ²°κ³Ό : undegined item = null; // λΉ κ°μ΄ λΌλ κ²μ ν λΉ ν΄μ€ μν console.log(item); // κ²°κ³Ό : null λν νμ μμλ μ°¨μ΄κ° λ©λλ€. console.log(typeof null); // object console.log(typeof nudefined); // undefined null μ μλ°ν λ§νμλ©΄, λΉμ΄μλ κ°μ²΄μ λλ€. κ·Έλ¬λ undefined λ λΉμ΄μλμ§ μλμ§ λͺ¨λ₯΄λ μνλ₯Ό λν λ λλ€. 곡λΆλ₯Ό νλ€ λ³΄λ©΄ μΆλ ₯ κ°μμ null νΉμ undefined λ₯Ό λ§μ£ΌμΉλ..
JS λμ¨ν νμ μ λμ μΈμ΄
μλ°μ€ν¬λ¦½νΈλ λμ¨ν νμ μ λμ μΈμ΄μ λλ€. νλμ© νμ΄μ λ΄ μλ€. μλ°μ€ν¬λ¦½νΈμλ νμ μ΄ μμ§λ§, λ³μμ νμ μ νμμ μΌλ‘ μ§μ νμ§ μμλ λ©λλ€. λλ¬Έμ ‘λμ¨ν νμ (loosely typed) μΈμ΄’ λΌκ³ ν μ μμ΅λλ€. λν, λ³μμ μ μ₯λλ κ°μ νμ μ μΈμ λ μ§ λ°κΏ μ μκΈ° λλ¬Έμ ‘λμ νμ (dynamically typed) μΈμ΄' λΌκ³ λ λΆλ₯Ό μ μμ΅λλ€. λ°λ‘ μ΄ νΉμ§μ΄ μλ°μ€ν¬λ¦½νΈμ μ½μ μ΄ λ©λλ€. μλ°μ€ν¬λ¦½νΈλ μ»΄νμΌ λ ν μ€νλλ κ²μ΄ μλλΌ μ€νλλ μκ° ν μ€μ© μ½μΌλ©° (μΈν°ν리ν°) μ€νμ΄ λ©λλ€. μ¦, μ»΄νμΌλλ κ³Όμ μ΄ λ°λ‘ μκΈ° λλ¬Έμ νμ μ€λ₯λ₯Ό μ€ν μ μ 체ν¬ν μκ° μμ΅λλ€. μ΄λ° μ½μ μ 보μνκΈ° μν΄μ κ°λ°μλ μ΄λ»κ² ν΄μΌ ν κΉμ? 1. μμλλ νμ μλ¬λ₯Ό μ..
JS ν¨μ μ μΈλ¬Έκ³Ό ν¨μ ννμ μ°¨μ΄
ν¨μ μ μΈλ¬Έκ³Ό ν¨μ ννμμ΄ λ¬΄μμΈμ§ μμλ΄ μλ€. ν¨μλ₯Ό λ§λ λ€λ λͺ©μ μ λμΌ νλ λ§λλ λ°©λ²μ΄ λ€λ¦ λλ€. // ν¨μ μ μΈλ¬Έ function add(a, b) { return a+b; } // ν¨μ ννμ const sum = function(a,b) { return a+b; } ν¨μ μ체λ₯Ό μ μΈνλ©΄ ν¨μ μ μΈλ¬Έ, μ μΈν ν¨μλ₯Ό λ³μμ λ΄μμ μ¬μ©νλ©΄ ν¨μ ννμμ΄λΌ ν©λλ€. μ΄ λμ νΈμ΄μ€ν λ°©μμμ μ°¨μ΄κ° λ©λλ€. add(1, 3); // ν¨μ μ μΈλ³΄λ€ μμ μμ§λ§ μ€λ₯κ° λμ§ μμ΅λλ€. function add(a, b) { // ν¨μ μ μΈλ¬Έ return a+b; } console.log(sum(1,2)); // μλ¬. // ReferenceError Cannot access 'sum' before..
JS μμ 볡μ¬μ κΉμ 볡μ¬
κ°μ²΄(Object)λ₯Ό 볡μ¬νλ λ°©λ²μ μμ 볡μ¬(Shallow Copy) μ κΉμ 볡μ¬(Deep Copy) λ‘ λλ©λλ€. μ¬μ©νλ λ©μλλ μ¬λΏ μμ§λ§, 컨μ μ 2κ°μ§ μ λλ€. κ°μ μ£Όμ κ°μ 볡μ¬ν΄ μ€ κ²μΈμ§, κ° μ체λ₯Ό 볡μ¬ν΄ μ€ κ²μΈμ§μ. κ°μ²΄κ°μ μ°Έμ‘°ν λ°μ΄ν°λ₯Ό 볡μ¬νκ² λλ©΄, κ°μ΄ λ©λͺ¨λ¦¬ μ μ ν λΉλλ κ²μ΄ μλλΌ κ°μ΄ λ€μ΄ μλ μ£Όμκ°(μ°Έμ‘°κ°) μ΄ λ©λͺ¨λ¦¬ μ μ λ€μ΄ κ°λλ€. λλ¬Έμ 볡μ¬λ₯Ό νκ² λλ©΄, κ° μμ²΄κ° μλλΌ κ°μ΄ λ€μ΄κ° μλ μ£Όμκ° μ λ¬ λ©λλ€. μ΄λ κ² λ³΅μ¬λλ κ²μ Shallow Copy λΌκ³ ν©λλ€. Shallow Copy spread syntax, Array.prototype.concat(), Array.prototype.slice(),Array.from(), Object.as..
JS λΆλ³ κ°μ²΄ λ§λ€κΈ°
νΉμ κ°μ²΄λ₯Ό μμ μ΄ λΆκ°λ₯νκ² λ§λ€ λ, λΆλ³ κ°μ²΄λ₯Ό λ§λ€μ΄ μ¬μ©ν©λλ€. λΆλ³ κ°μ²΄λ₯Ό λ§λλ λ°©λ²μ 3κ°μ§ μ λλ€. κ° λ°©λ²λ§λ€ μμ κ°λ₯ λ²μκ° λ€λ₯΄κ² μ νλκΈ° λλ¬Έμ νμμ λ°λΌ μ ννλ©΄ λ©λλ€. 1. Object.freeze() μμ± μ¬μ μ X, μΆκ° X, μμ X, μμ X κ·Έλ¬λ! μ€μ²©λ company λ freeze λμ§ μμ΅λλ€. λλ¬Έμ company.name μ μμ κ°λ₯ν©λλ€. μμ± μ¬μ μκ° μλλ€λ κ²μ Object.defineProperty() λ‘ μμ±λ€μ μ¬μ μ ν μ μλ€λ λ»μ λλ€. μλ λ§ν¬ μ°Έκ³ . const company = { name: 'SS'}; const people = { name: 'lee', age: 20, work: company } Object.freeze(p..
JS Truthy μ Falsy
μ«μλ λ¬Έμμ΄λ μ΄λ€ κ°μ΄λμ λ°λΌ true, false μ κ°μ κ°μ§λλ€. μ΄κ²μ μ ννκ² μκ³ μμ΄μΌ λμ€μ ν·κ°λ¦¬μ§ μμΌλ μ΄λ² κΈ°νμ μΈμ λ΄ μλ€! Falsy κ±°μ§ 0 -0 '' null undefined NaN Truthy μ°Έ 1 -1 'hello!' {} Infinity μ°Έκ³ μλ£ π https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Boolean Boolean - JavaScript | MDN Boolean κ°μ²΄λ λΆλ¦¬μΈ κ°μ κ°μΈκ³ μλ κ°μ²΄μ λλ€. developer.mozilla.org
JS ν λ³ν (λ¬Έμλ₯Ό μ«μλ‘, μ«μλ₯Ό λ¬Έμλ‘), λ³μμ νμ νμΈ typeof
ν λ³νμ μμ λ³μμ νμ μ μ μ μλ λ°©λ²μ μμ λ³΄κ² μ΅λλ€. κ°λ¨ν©λλ€. μ μ¬μ©νλ©΄ λ³μμ νμ μ μ μ μμ΅λλ€. boolean ν, μ«μνμ λ¬Έμν μΌλ‘ λ°κΏ λ΄ λλ€. let value = true; alert(typeof value); // boolean value = String(value); // string μΌλ‘ ν λ³ν alert(value); // "true" alert(typeof value); // string String() μ μ¬μ©νμ§ μκ³ +"" λ₯Ό μ¬μ©νκΈ°λ ν©λλ€. νΉμ toString() μ μ¬μ©ν©λλ€. let cnt = 1; console.log(typeof cnt); // number console.log(typeof (cnt+"")); // string cons..
JS κΈ°λ³Έν λ°μ΄ν°μ μ°Έμ‘°ν λ°μ΄ν°μ μ°¨μ΄
μλ°μ€ν¬λ¦½νΈμ νμ μ ν¬κ² 2κ°μ§λ‘ λλ©λλ€. κΈ°λ³Έν λ°μ΄ν°(Primitive) μ μ°Έμ‘°ν λ°μ΄ν°(Reference) μ λλ€. κΈ°λ³Έν λ°μ΄ν°μλ string, number, bigint, boolean, undefined, symbol, null μ΄ μμ΅λλ€. μ°Έμ‘°ν λ°μ΄ν°μλ object κ° μκ³ , κ±°κ²μ ν¬ν¨μ΄ λλ array, function, RegExp(μ κ·ννμ), map, set λ±μ΄ μμ΅λλ€. λ νμ μ κ°μ₯ ν° μ°¨μ΄λ κ°μ μ μ₯νλ λ°©μμ λλ€. κΈ°λ³Έν λ°μ΄ν°λ λ°λ‘ κ°μ λ©λͺ¨λ¦¬μ ν λΉνμ§λ§, μ°Έμ‘°ν λ°μ΄ν°λ κ°μ΄ λ€μ΄ μλ λ©λͺ¨λ¦¬μ μ£Όμλ₯Ό ν λΉν©λλ€. μλ₯Ό λ€μ΄λ³΄λ©΄, λ¨Όμ a μ 1 μ λ£μ΅λλ€. let a = 1; let b = a; aμ κ°μ λ°μ bλ₯Ό μΆλ ₯νλ©΄ 1μ΄ λμ΅λλ€. μ΄κ²μ..
νλ‘κ·Έλλ¨Έμ€ level 1 ν°μΌλͺ¬
λ¬Έμ λ§ν¬ https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=javascript function solution(nums) { const nums_set = new Set(nums); const nums_set_size = nums_set.size; // μΌν°μ ν¬μΌλͺ¬ μ’ λ₯ μ const nums_select = nums.length/2; // κ³ λ₯Ό μ μλ ν¬μΌλͺ¬ μ return (nums_select < nums_set_size) ? nums_select : nums_set_size; } solution([3,1,2,3]); // solution([3,3,3,2,2,4]); // solution([3,3,3,2,2,2]);
nodemon μ€μΉ μ€λ₯ zsh : command not fount : nodemon
nodemon μ μ μ₯κ³Ό λμμ μ€ν¬λ¦½νΈλ₯Ό μ½μμ μ€νμν¬ μ μλ μμ£Ό μ μ©ν ν¨ν€μ§μ λλ€! (μ°Έκ³ λ‘ μ λ zsh ν°λ―Έλμ μ¬μ©ν©λλ€.) nodemon νκ³ npm install nodemon -g νκ³ nodemon νλ©΄ λμΌ νλλ°, μλμ κ°μ μ€λ₯ λ°μ. zsh : command not fount : nodemon ν΄κ²°μ± - ν΄λλ₯Ό μμ±ν΄μ μ μ μ€μΉ (global) μμΉλ₯Ό λ³κ²½ μλλ₯Ό μμλλ‘ λ°λΌ μΉλ€. mkdir ~/.npm-global npm config set prefix '~/.npm-global' vi ~/.zprofile μ΄λ κ² νλ©΄ vi νΈμ§κΈ°λ‘ λ€μ΄κ°λ€. i λ₯Ό λλ¬ νΈμ§νκΈ° λͺ¨λλ‘ μ ν export PATH=~/.npm-global/bin:$PATH νΈμ§λͺ¨λμμ μμ κ°μ΄ μ¨..

220729~220806 1μ£Όμ°¨
π₯ μμ² λ°λΉ΄μ§λ§, κ·Έλ§νΌ λ§μ΄ λ°°μ λ ν μ£Ό β¨ λλμ 1 : νμ μ μ€μμ± β μΊ νκ° μμνμ λ§μ νλ‘μ νΈ μ‘°κ° μ§μ¬μ‘λ€. μΈμ¬λ§ νκ³ λ°λ‘ νλ‘μ νΈ μ£Όμ μ μ λΆν° api μ€κ³, νλ©΄ μ€κ³, ERD μ€κ³, κΈ°λ₯ λΆλ°°κ° μ΄λ£¨μ΄μ‘λ€. μ°λ¦¬ μ‘°μ νλ‘μ νΈλ [νΈμμ μ μμ 리뷰νλ μΉμ¬μ΄νΈ] μλ€. λ΄κ° 맑μ λΆλΆμ λ©μΈνμ΄μ§ νλ©΄ ꡬνκ³Ό λ©μΈνμ΄μ§μ κΈ°λ₯ ꡬνμ΄μλ€. κ° νμ΄μ§λ‘ κ° μ μλ λ·λ°λ₯Ό λ§λ€κ³ κ²μκΈ κ²μκ³Ό κ²μκΈ μμΈ λ³΄κΈ° κΈ°λ₯μ ꡬνν΄μΌ νλ€. κ°μ 맑μ λΆλΆλ§ μ νλ©΄ νλ‘μ νΈκ° λ¬Έμ μμ΄ μμ±λλ μ€ μμμΌλ 그건 λμ μ°©κ°μ΄μλ€..! κ²μκΈ μμΈ μ‘°ν κΈ°λ₯μ ꡬν νλ €λ©΄ κ²μκΈμ μ λ³΄κ° db μ μ΄λ»κ² μ μ₯λλ μ§λ₯Ό μμμΌ νλλ°, κ²μκΈμ μ΄λ―Έμ§ μ μ₯ λ°©μμ μ νμ§ λͺ»ν΄ κ²μκΈ ..