Frontend/JavaScript
무ν μ€ν¬λ‘€(Infinite Scroll)μ΄λ? μ¬μ©μκ° νμ΄μ§ νλ¨μ λλ¬νμ λ, μ½ν
μΈ κ° κ³μ λ‘λλλ μ¬μ©μ κ²½ν(UX) λ°©μμ΄λ€. ν νμ΄μ§ μλλ‘ μ€ν¬λ‘€ νλ©΄ λμμ΄ μλ‘μ΄ νλ©΄μ 보μ¬μ£Όκ² λκ³ μ΄λ‘ μΈν΄ λ§μ μμ μ½ν
μΈ λ₯Ό μ€ν¬λ‘€ ν΄μ λ³Ό μ μλ€. νμ΄μ§λ€μ΄μ
μ΄ μλ 무ν μ€ν¬λ‘€λ‘ ꡬννλ €λ μ΄μ β μν λͺ©λ‘μμ μνμ 보μ¬μ£Όκ³ μ ν λ νμ΄μ§λ€μ΄μ
, 무ν μ€ν¬λ‘€ μ€ λ¬΄μμ΄ μ¬μ©μ κ²½νμ λμ± μ’κ² ν μ μμμ§ κ³ λ―Όν λμ λͺ¨λ°μΌ νκ²½μ κ³ λ €ν΄μ 무ν μ€ν¬λ‘€μ μ¬μ©νκΈ°λ‘ νλ€.(μ°¨νμ νλ‘μ νΈλ₯Ό λ°μνμΌλ‘ 리ν©ν°λ§ ν κ³νππ») λν, λ€μ μνμ 보기 μν μ¬μ©μμ ν΄λ¦μ μ΅μννκ³ λ μ½κ² λ€μν μνμ λ³Ό μ μμ κ²μ΄λΌκ³ νλ¨νλ€. ꡬννλ κ³Όμ 무ν μ€ν¬λ‘€μ ꡬννλ λ°©λ²μ μ€ν¬..
Frontend/JavaScript
μΈν°μ
ν°(Interceptors)λ? then λλ catchλ‘ μ²λ¦¬λκΈ° μ μ μμ²κ³Ό μλ΅μ κ°λ‘μ± μ μλ€. Axios μΈν°μ
ν°λ₯Ό μ μ©νλ €λ μ΄μ β ν μ΄ νλ‘μ νΈλ₯Ό μ§ννλ©΄μ μλ²μ ν ν° μΈμ¦μ νμλ‘ νλ API μμ²μ ν λλ§λ€ HTTP Authorization μμ² ν€λμ ν ν°μ λ£μ΄μ€μΌνκ³ 401(Unauthorized) μλ¬κ° μλ²λ‘λΆν° λ€μ΄μ€λ©΄ ν ν°μ κ°±μ ν΄μ€ ν μ¬μμ²μ 보λ΄λ κ³Όμ μ ν κ³³μμ λͺ¨λ μ²λ¦¬νμ¬ μ€λ³΅ μ½λλ₯Ό μ κ±°νκ³ μ μ§λ³΄μμ±μ ν₯μμν€κΈ° μν΄ Axios μΈν°μ
ν°λ₯Ό μ μ©νκΈ°λ‘ νλ€. μ¬μ©μ μ§μ configλ‘ μλ‘μ΄ Axios μΈμ€ν΄μ€λ₯Ό μμ±νμ¬ μ¬μ©νλ λμ± νΈλ¦¬νλ€. (baseURL, timeout μ€μ ) μ μ©νλ κ³Όμ 1) Axios μΈμ€ν΄μ€ μμ± const instanc..
Frontend/JavaScript
μ κ· ννμ(Regular Expression)μ λ¬Έμμ΄μμ νΉμ λ¬Έμ μ‘°ν©μ μ°ΎκΈ° μν ν¨ν΄μ΄λ€. RegExp RegExp μμ±μλ ν¨ν΄μ μ¬μ©ν΄ ν
μ€νΈλ₯Ό νλ³ν λ μ¬μ©νλ€. 리ν°λ΄ νκΈ°λ²μ 맀κ°λ³μλ λ λΉκΈμΌλ‘ κ°μΈμΌ νλ©° λ°μ΄νλ₯Ό μ¬μ©νμ§ μλλ€. μμ±μ ν¨μμ 맀κ°λ³μλ λΉκΈμΌλ‘ κ°μΈμ§ μμΌλ λ°μ΄νλ₯Ό μ¬μ©νλ€. // μ κ· ννμ μμ±νκΈ° /ab/g new RegExp(/ab/, 'g') // 리ν°λ΄ new RegExp('ab', 'g') // μμ±μ λμ μΌλ‘ μ κ· ννμ μμ±νκΈ° const λ³μ = 'JS'; const regex = new RegExp(`${λ³μ}`, 'g'); console.log(regex); // /JS/g π§ μμ©νκΈ° match() λ©μλλ λ¬Έμμ΄μ΄ μ κ·μκ³Ό 맀μΉλλ..
Frontend/JavaScript
ν(Queue)λ? νλ λ°μ΄ν°λ₯Ό μΌμμ μΌλ‘ μ μ₯νλ μλ£κ΅¬μ‘° μ€ νλλ‘, λ¨Όμ μ
λ ₯λ λ°μ΄ν°κ° λ¨Όμ μΆλ ₯λλ "μ μ
μ μΆ(FIFO: First-In-First-Out)" μμΉμ λ°λ¦
λλ€. ν(Queue)μ ꡬν λ°©λ² 2κ°μ§ νλ λ°°μ΄(Array)μ΄λ μ°κ²° 리μ€νΈ(Linked List)λ₯Ό μ¬μ©νμ¬ κ΅¬νν μ μμ΅λλ€. 1οΈβ£ λ°°μ΄ λ°°μ΄μ μ¬μ©ν κ²½μ°, ν¬κΈ°κ° κ³ μ λμ΄ μμ΄μ λ°μ΄ν°μ μΆκ° λ° μ κ±°μ μ νμ΄ μμ μ μμ§λ§, μ°μ° μλκ° λΉ λ¦
λλ€. 2οΈβ£ μ°κ²° 리μ€νΈ μ°κ²° 리μ€νΈλ₯Ό μ¬μ©ν κ²½μ°, ν¬κΈ°μ μ νμ΄ μμ΄μ λ°μ΄ν°λ₯Ό μ λμ μΌλ‘ μΆκ° λ° μ κ±°ν μ μμ§λ§, μ°μ° μλκ° λ립λλ€. π§ λ°°μ΄λ‘ ν(Queue)λ₯Ό ꡬνν΄λ λμ§λ§ κ΅³μ΄ ? μ°κ²° 리μ€νΈλ‘ ꡬνν΄μΌ νλ μ΄μ JavaScriptμμ λ°°μ΄μ μ¬μ©..
Frontend/JavaScript
JavaScriptμ λ°°μ΄(Array)λ κ°μ²΄(ν¨μ)λ€. λ°λΌμ, λνμ κ°μ²΄μ§ν₯ μΈμ΄μΈ μλ°μ λ§μ°¬κ°μ§λ‘ new Array()κ° μ‘΄μ¬νλ€. λ°°μ΄μ μμ±μ(new Array())μ νλμ μ«μ 맀κ°λ³μλ‘ μμ±ν μ μμ§λ§, κ·Έ κ²°κ³Όλ lengthκ° λ§€κ°λ³μκ³ , κΈΈμ΄λ§νΌμ λΉ μ¬λ‘―μ κ°μ§ λ°°μ΄μ΄λ€. λ°°μ΄μ μ΄κΈ°κ°μ νμΈν΄λ³΄λ©΄ undefinedκ° μΆλ ₯λλ κ²μ λ³Ό μ μλ€. let datas = new Array(5) console.log(datas[0]) // undefined console.log(datas.length) // 5 μλμ κ°μ΄ new Array()μ 맀κ°λ³μμ μνλ μ΄κΈ°κ°λ€μ λ겨주λ λ°©λ²μΌλ‘ μμ±κ³Ό μ΄κΈ°νλ₯Ό λμμ ν μ μμ§λ§, λ°°μ΄μ κΈΈμ΄μ λ°λΌ νκ³κ° μ‘΄μ¬νλ€. // new Ar..
Frontend/JavaScript
μ€μ½ν(Scope) β 1οΈβ£ λ³μλ₯Ό μ°Έμ‘°ν μ μλ μ ν¨ λ²μ 2οΈβ£ μλ³μ(λ³μ, ν¨μ, ν΄λμ€ μ΄λ¦) μ κ·Ό κ·μΉμ λ°λ₯Έ μ ν¨ λ²μ λ²μ(μ€μ½ν)λ μ€κ΄νΈ(λΈλ‘) λλ ν¨μμ μν΄ λλ μ§λ€. μ€μ½νμ μ£Όμ κ·μΉ β π κ·μΉ 1. λΈλ μμ λ³μλ λΈλ μμμλ§ μ ν¨νλ€. λ°κΉ₯μͺ½ μ€μ½νμμ μ μΈν μλ³μλ μμͺ½ μ€μ½νμμ μ¬μ© κ°λ₯ λ°λ©΄, μμͺ½μμ μ μΈν μλ³μλ λ°κΉ₯μͺ½ μ€μ½νμμλ μ¬μ©ν μ β λΈλ λ΄λΆμμλ§ μ‘΄μ¬νκ³ , λΈλμ΄ λλλ©΄ κ°λΉμ§ 컬λ ν°(GC)μ μν΄ μλμΌλ‘ μλ©Έλλ€. const a = 1; { const b = 2; console.log(a); } console.log(b); // μ€λ₯ λ°μ(app crashed) π κ·μΉ 2. μ μ μ€μ½ν vs μ§μ μ€μ½ν κ°μ₯ λ°κΉ₯μͺ½μ μ€μ½νλ₯Ό μ ..
Frontend/JavaScript
ν΄λ‘μ β ν¨μμ ν¨μκ° μ μΈλ μ΄νμ νκ²½μ μ‘°ν© μ΄ νκ²½μ ν΄λ‘μ κ° μμ±λ μμ μ μ ν¨ λ²μ λ΄μ μλ λͺ¨λ μ§μ λ³μλ‘ κ΅¬μ±λλ€. μ¦, λ΄λΆ ν¨μμμ μΈλΆ ν¨μμ μλ μνμ μ κ·Όν μ μλ κΆνμ λΆμ¬νλ€λ κ²μ΄λ€. μ μ¬μ©ν κΉ β λ΄λΆ μ 보λ₯Ό μλνκ³ , κ³΅κ° ν¨μ(public λλ μΈλΆ)λ₯Ό ν΅ν λ°μ΄ν° μ‘°μμ μν΄ μ¬μ©νλ€. (μΊ‘μν, μ 보μλ) μ μλ³μ λν μ€μ¬μ§κ² λλ―λ‘ κ°λ° κ³Όμ μμ μ€μλ‘ μ κ·Όνλ μΌμ΄ μμκΈ΄λ€. νμ¬λ ν΄λμ€μμμ private νλ λλ λ©μλλ₯Ό μ¬μ©νλ©΄ λλ€. μ΄λ»κ² μ΄κ²μ΄ κ°λ₯ν κΉ β inner λ μ컬 νκ²½μ΄ μΈλΆ λ μ컬 νκ²½μ μ°Έμ‘°νκ³ μκΈ° λλ¬Έμ΄λ€. ν΄λ‘μ λ₯Ό μ μ΄ν΄νλ €λ©΄ μ΄λ»κ² λ³μμ μ ν¨λ²μλ₯Ό μ§μ νλμ§(Lexical scoping)λ₯Ό λ¨Όμ μ΄ν΄ν΄μΌ νλ€...
Frontend/JavaScript
replace() λ©μλ 1οΈβ£ μ΄λ€ ν¨ν΄μ μΌμΉνλ μΌλΆ λλ λͺ¨λ λΆλΆμ΄ κ΅μ²΄λ μλ‘μ΄ λ¬Έμμ΄μ λ°ν 2οΈβ£ 첫 λ²μ§Έ λ¬Έμμ΄λ§ μΉνμ΄ λλ©° μλ λ¬Έμμ΄μ λ³κ²½λμ§ β const str = 'μλ
νμΈμ! μ΄μ±νΈ μ
λλ€.'; console.log(str.replace('', '').replace('', '')); // expected output: "μλ
νμΈμ! μ΄μ±νΈ μ
λλ€." ''μ ''μ λͺ¨λ λ¬Έμλ₯Ό μΉννκ³ μΆμλ λλ replace() λ©μλμ νκ³λ₯Ό λκΌλ€. λ€λ₯Έ λ°©λ²λ λ§μ΄ μκ² μ§λ§ λλ split(), join() λ©μλλ₯Ό μ¬μ©νμ¬ μ΄λ₯Ό ν΄κ²°νμλ€. split() λ©μλ String κ°μ²΄λ₯Ό μ§μ ν ꡬλΆμλ₯Ό μ΄μ©νμ¬ μ¬λ¬ κ°μ λ¬Έμμ΄λ‘ λλ Join() λ©μλ κ° μμ λλ λ©€λ² μ¬μ΄μ μ§μ ..