πŸ”€ Language/🟨 JavaScript

    JS. ES6 Classes

    ES6 Classes ClassλŠ” 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ ν…œν”Œλ¦Ώμ΄λ‹€. ν΄λž˜μŠ€λŠ” 데이터와 이λ₯Ό μ‘°μž‘ν•˜λŠ” μ½”λ“œλ₯Ό ν•˜λ‚˜λ‘œ μΆ”μƒν™”ν•˜λŠ”λ° μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ ν΄λž˜μŠ€λŠ” ν”„λ‘œν† νƒ€μž…μ„ μ΄μš©ν•΄μ„œ λ§Œλ“€μ–΄μ‘Œμ§€λ§Œ ES5의 클래슀 μ˜λ―Έμ™€λŠ” λ‹€λ₯Έ 문법과 의미λ₯Ό κ°€μ§„λ‹€. const imae = { name: 'imae', normal: function () { console.log(this.name) }, arrow: () => { console.log(this.name) } } imae.normal() imae.arrow() μ‹€ν–‰ κ²°κ³Ό imae undefined ES6μ—μ„œλŠ” 클래슀 문법을 ν‰λ‚΄λ‚΄λŠ” 것이 κ°€λŠ₯ν•˜λ‹€. prototype을 μ“°λŠ” λŒ€μ‹  classλ₯Ό μ‚¬μš©ν•˜μ—¬ μƒμ„±μž ν•¨μˆ˜λ₯Ό λ§Œλ“€ 수 μžˆλ‹€. function User(first, l..

    JS. this

    this 일반(Normal) ν•¨μˆ˜λŠ” 호좜 μœ„μΉ˜μ—μ„œ 따라 this μ •μ˜! ν™”μ‚΄ν‘œ(Arrow) ν•¨μˆ˜λŠ” μžμ‹ μ΄ μ„ μ–Έλœ ν•¨μˆ˜ λ²”μœ„μ—μ„œ this μ •μ˜! const imae = { name: 'Imae', normal: function () { console.log(this.name) }, arrow: () => { console.log(this.name) } } imae.normal() imae.arrow() μ‹€ν–‰ κ²°κ³Ό Imae undefined 또 λ‹€λ₯Έ μœ„μΉ˜μ—μ„œ amyλΌλŠ” λ³€μˆ˜λ₯Ό λ§Œλ“€μ–΄λ‚΄μ„œ 객체 데이터λ₯Ό ν• λ‹Ήν•œλ‹€. imae.normal, imae.arrow λ“± μœ„μ— 있던 데이터λ₯Ό amy에 ν• λ‹Ήλ˜λŠ” ꡬ쑰이닀. const amy = { name: 'Amy', normal: imae.normal, arrow: ima..

    JS. μƒμ„±μž ν•¨μˆ˜(prototype)

    μƒμ„±μž ν•¨μˆ˜(prototype) μƒμ„±μž ν•¨μˆ˜μ™€ 일반 ν•¨μˆ˜μ˜ 기술적 μ°¨μ΄λŠ” μ—†λ‹€. ν•˜μ§€λ§Œ μƒμ„±μž ν•¨μˆ˜λŠ” 두 κ°€μ§€ κ΄€λ‘€λ₯Ό 따라야 ν•œλ‹€. ν•¨μˆ˜ μ΄λ¦„μ˜ 첫 κΈ€μžλŠ” λŒ€λ¬Έμžλ‘œ μ‹œμž‘ν•œλ‹€. λ°˜λ“œμ‹œ 'new' μ—°μ‚°μžλ₯Ό λΆ™μ—¬μ€€λ‹€. 일반적인 ν•¨μˆ˜μ˜ λͺ¨μŠ΅μ΄λ‹€. λ˜ν•œ λ¦¬ν„°λŸ΄ λ°©μ‹μœΌλ‘œ μ½”λ“œκ°€ μž‘μ„±λœλ‹€. λ¦¬ν„°λŸ΄ 방식 μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λ¦¬ν„°λŸ΄ ν‘œκΈ°λ²•μ„ μ΄μš©ν•΄, ν•„μš”ν•œ μš”μ†Œλ“€μ„ μ—΄κ±°ν•˜λŠ” 것 만으둜 객체λ₯Ό λ§Œλ“€ 수 μžˆλ‹€. μ΄λŸ¬ν•œ ν‘œκΈ°λ²•μ€ JSON에도 μ˜κ°μ„ μ£Όμ—ˆλ‹€. { }, [ ], " " 등을 예둜 λ“€ 수 μžˆλ‹€. const imae = { firstName: 'Imae', lastName: 'Kwak', getFullName: function () { return `${this.firstName} ${this.lastName}` } } ..

    JS. 콜백(CallBack)

    콜백(CallBack) ν•¨μˆ˜μ˜ 인수둜 μ‚¬μš©λ˜λŠ” ν•¨μˆ˜ ex. setTimeout(ν•¨μˆ˜, μ‹œκ°„) 콜백 ν™œμš© 'imae!'λΌλŠ” λ¬Έμž₯을 좜λ ₯ν•˜κ³  μ„±κ³΅ν–ˆλ‹€λŠ” μ˜λ―Έμ—μ„œ 'Done!'을 좜λ ₯ν•  것인데 setTimeout ν•¨μˆ˜λŠ” 3μ΄ˆν›„μ— μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— 'Done!'이 λ¨Όμ € λ‚˜μ˜¨λ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒ? function timeout (callback) { setTimeout(() => { console.log('imae!') // imae! callback() }, 3000) // 1000ms } timeout(() => { console.log('Done!') // Done! }) timeoutμ΄λΌλŠ” ν•¨μˆ˜ μ•ˆμ— callbackμ΄λΌλŠ” λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  setTimeout ν•¨μˆ˜ μ•ˆμ— callba..

    JS. 타이머 ν•¨μˆ˜

    타이머 ν•¨μˆ˜ 일정 μ‹œκ°„μ΄ μ§€λ‚œ ν›„ νŠΉμ • μ½”λ“œ λ˜λŠ” ν•¨μˆ˜κ°€ 싀행될 수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” ν•¨μˆ˜μ™€ 일정 μ‹œκ°„λ§ˆλ‹€ ν•¨μˆ˜κ°€ 싀행될 수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” ν•¨μˆ˜λ₯Ό λ§ν•œλ‹€. 타이머 ν•¨μˆ˜μ˜ μ’…λ₯˜ setTimeout(ν•¨μˆ˜, μ‹œκ°„): 일정 μ‹œκ°„ ν›„ ν•¨μˆ˜ μ‹€ν–‰ const timer = setTimeout(() => { console.log('imae!') // imae! }, 3000) // 1000ms 3초 후에 'imae!'κ°€ 좜λ ₯λœλ‹€. ms λ‹¨μœ„λ₯Ό μ‚¬μš©ν•œλ‹€. clearTimeout(): μ„€μ •λœ Timeout ν•¨μˆ˜λ₯Ό μ’…λ£Œ const h1El = document.querySelector('h1') h1El.addEventListener('click', () => { clearTimeout(timer) }) setTimeout ν•¨μˆ˜..

    JS. ν˜Έμ΄μŠ€νŒ…

    ν˜Έμ΄μŠ€νŒ…(Hoisting) ν•¨μˆ˜ μ„ μ–ΈλΆ€κ°€ μœ νš¨λ²”μœ„ μ΅œμƒλ‹¨μœΌλ‘œ λŒμ–΄μ˜¬λ €μ§€λŠ” ν˜„μƒ 기쑴의 μž‘μ„± 방식을 μ μš©ν•˜λ©΄ μ½”λ“œλ₯Ό μœ„μ—μ„œ μ•„λž˜λ‘œ μ½λŠ”λ° 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•Šλ‚˜? ν•¨μˆ˜ 선언식을 μ‚¬μš©ν•˜λ©΄ 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€. const a = 7 double() // 14 function double () { console.log(a * 2) } ν•¨μˆ˜ 선언을 밑에 μž‘μ„±ν•΄λ„ ν•¨μˆ˜ 호좜이 κ°€λŠ₯ν•˜λ‹€. ν•¨μˆ˜μ—λŠ” λ³΅μž‘ν•œ λ‚΄μš©μ΄ μžˆλ‹€. ν•¨μˆ˜λ§Œ λ”°λ‘œ μ§€μ •ν•΄μ„œ μ§„ν–‰ 과정을 ν•΄μ„ν•˜κΈ° 쒋도둝 ν˜Έμ΄μŠ€νŒ…μ„ μ‚¬μš©ν•˜λŠ” 것이닀. 전체 μ½”λ“œμ˜ μ΅œν•˜λ‹¨μ— λ†“μœΌλ©΄ 가독성이 μ’‹μ•„μ§„λ‹€.

    JS. IIFE, μ¦‰μ‹œμ‹€ν–‰ν•¨μˆ˜

    IIFE, μ¦‰μ‹œμ‹€ν–‰ν•¨μˆ˜ νŠΉμ •ν•œ ν•¨μˆ˜λ₯Ό μ¦‰μ‹œ μ‹€ν–‰ν•  수 μžˆλ‹€. double() 뒀에 μ„Έλ―Έμ½œλ‘ (;)을 뢙이지 μ•ŠμœΌλ©΄ 였λ₯˜κ°€ λ‚œλ‹€. const a = 7; function double () { console.log(a * 2) }; double(); (function () { console.log(a * 2) })(); 일반적인 ν•¨μˆ˜λŠ” μœ„μ™€ 같은 λ°©λ²•μœΌλ‘œ μž‘μ„±ν•œλ‹€. ν•˜μ§€λ§Œ μ¦‰μ‹œμ‹€ν–‰ν•¨μˆ˜λŠ” μ†Œκ΄„ν˜Έ(())둜 λ¬Άμ–΄μ„œ μž‘μ„±ν•œλ‹€. μ¦‰μ‹œμ‹€ν–‰ν•¨μˆ˜ μž‘μ„± 방법 // 방법 1 (function () { console.log(a * 2) })(); // 방법 2 (function () { console.log(a * 2) }()); 방법 1κ³Ό 방법 2κ°€ μžˆλ‹€. ꢌμž₯λ˜λŠ” 방법은 방법 2이닀.

    JS. ν™”μ‚΄ν‘œν•¨μˆ˜

    JS ν™”μ‚΄ν‘œν•¨μˆ˜μ™€ κΈ°μ‘΄ ν•¨μˆ˜μ˜ 차이점 // ν™”μ‚΄ν‘œ ν•¨μˆ˜ // () => {} vs function () {} const double = function (x) { return x * 2 } console.log('double: ', double(7)) // 14 const doubleArrow = (x) => { return x * 2 } console.log('doubleArrow: ', doubleArrow(7)) // 14 ν™”μ‚΄ν‘œν•¨μˆ˜μ™€ 차이점은 function ν‚€μ›Œλ“œ λŒ€μ‹  '=>' λ₯Ό μ‚¬μš©ν•œλ‹€. κ°€μž₯ 큰 차이점은 μΆ•μ•½ν˜•μœΌλ‘œ μ‘°κΈˆμ”© 쀄여쀄 수 μžˆλ‹€. ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό 쀄이면 μ–΄λ–»κ²Œ μ€„μ΄λŠ”κ°€? const doubleArrow = x => x * 2 console.log('doubleArrow: ', dou..

    JS. ν•¨μˆ˜

    ν•¨μˆ˜ μ„ μ–Έκ³Ό 호좜 // ν•¨μˆ˜ μ„ μ–Έ function sum (a, b) { // μ‹€ν–‰ μ½”λ“œ console.log(a + b) } // ν•¨μˆ˜ 호좜 sum (1, 2) ν•¨μˆ˜λž€ νŠΉμ • λ™μž‘(κΈ°λŠ₯)을 μˆ˜ν–‰ν•˜λŠ” 일뢀 μ½”λ“œμ˜ 집합이닀. 읡λͺ… ν•¨μˆ˜μ™€ κΈ°λͺ… ν•¨μˆ˜ function () {} // 읡λͺ… ν•¨μˆ˜ function sum () {} // κΈ°λͺ… ν•¨μˆ˜ νŠΉμ •ν•œ 이름이 μžˆλŠ” ν•¨μˆ˜λ₯Ό κΈ°λͺ… ν•¨μˆ˜λΌκ³  ν•œλ‹€. 그와 λ°˜λŒ€λ‘œ νŠΉμ •ν•œ 이름이 μ—†λŠ” ν•¨μˆ˜λŠ” 읡λͺ… ν•¨μˆ˜μ΄λ‹€. κΈ°λͺ… ν•¨μˆ˜μ™€ 같은 κ²½μš°λŠ” ν•¨μˆ˜ 선언식, 읡λͺ… ν•¨μˆ˜λŠ” ν•¨μˆ˜ ν‘œν˜„μ‹μ΄λΌκ³  ν•œλ‹€. ν•¨μˆ˜ ν‘œν˜„ const a = function () {} ν•¨μˆ˜λ₯Ό λ³€μˆ˜λ‘œ μ„ μ–Έν•˜μ—¬ ν‘œκΈ°ν•˜λŠ” 것은 ν•¨μˆ˜ ν‘œν˜„μ΄λΌκ³  ν•œλ‹€. 읡λͺ… ν•¨μˆ˜μ˜ 경우, ν•¨μˆ˜ ν˜ΈμΆœμ„ ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ³€μˆ˜λ‘œ μ„ μ–Έν•΄μ£Όμ–΄μ•Ό ν•œλ‹€. λ°˜ν™˜..

    JS. var, let, const, ν˜•λ³€ν™˜

    🌐 JS λ³€μˆ˜ μœ νš¨λ²”μœ„ // λ³€μˆ˜ μœ νš¨λ²”μœ„ // var, let, const console.log('λ³€μˆ˜ μœ νš¨λ²”μœ„ var let const') // let , constλŠ” λΈ”λŸ­ λ‚΄μ—μ„œ 유효 // var은 λ˜λ„λ‘ μ‚¬μš© x function scope () { if (true) { var a = 123 }; console.log(a) } scope() // 123 🌐 JS ν˜•λ³€ν™˜ // ν˜•λ³€ν™˜ console.log('ν˜•λ³€ν™˜') // Truthy (참같은 κ°’) // true, {}, [], 1, 2, 'false', -12, '-3.14', ... // Falsy (거짓같은 κ°’) // false, '', null, undefined, 0, -0, NaN const q = 1 const w = '1' console..