λ³μλ μ¬μ μ μλ―Έλ‘ λ°λ μ μλ κ°μΌλ‘ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯νλ νλμ κ°μ΄λ€.
π‘ νλμ κ°μ΄λΌκ³ νν νμμ§λ§ λ³μμ μ¬λ¬κ°μ κ°μ μ μ₯νλ λ°©λ²μ ν¬κ² 2κ°μ§λ‘ κ°μ²΄λ λ°°μ΄μ μ¬μ©νμ¬ κ·Έλ£Ήννμ¬ νλμ κ°μ²λΌ μ¬μ©ν μ μλ€. λ°°μ΄μμ κ°μ²΄μ λ£μ΄μ κ°μ²΄ λ°°μ΄λ κ°λ₯νλ€.
JSμμμ λ³μμ μ μΈ λ°©λ²μ ν¬κ² 3κ°μ§μ΄λ€. ES6μ΄μ μ μ¬μ©νμλ varλ₯Ό μ¬μ©νκ±°λ ES6μ΄νλ‘λ constμ letμ΄ μΆκ° λμλ€.
π‘ var ν€μλμ λ¬Έμ μ μ ν¬κ² 2κ°μ§λ‘ λλλ€. νΈμ΄μ€ν (Hositing)κ³Ό ν¨μμ€μ½ν(Function Scope)λΌλ μ¬μ€μ΄λ€.
μ¬μ μ μλ―Έλ‘λ λμ΄μ¬λ¦¬λ€. λΌλ λ»μΌλ‘ λ³μκ° μλμ μ μΈμ΄ λμ΄μμ΄λ μ΅μλ¨μΌλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ μλνλ κ²μ νΈμ΄μ€ν (Hositing)μ΄λΌκ³ νλ€.
var name = "YHJ"; // λ³μλ₯Ό μ μΈνκ³ κ°μ ν λΉν¨ console.log(name); // YHJμΆλ ₯ // νΈμ΄μ€ν (Hositing) console.log(name); // undefined μΆλ ₯ var name = "YHJ"; // λ³μλ₯Ό μλμμ μ μΈ
π‘ μκ°μμλ μλ¬κ° μΆλ ₯λμ΄μΌ νμ§λ§ μλ¬κ° μΆλ ₯λμ§ μκ³ undefinedκ° μΆλ ₯λλ€.
π‘ μλ°μ€ν¬λ¦½νΈ μ€ν컨ν μ€νΈμμλ λκΈ°μ μΌλ‘ μ€νλλ κ²μ μμλλ‘ Stackμ΄λΌλ 곡κ°μ μ μ₯ λΉλκΈ°μ μΌλ‘ μ€νλλ κ²μ Queueμ μ μ₯λμ΄ Stackμ΄ μλ£λμ΄μΌ Queueκ° νΈμΆλλ€. λμ€μ μμΈν μ¬λ €λ³Ό μμ μ΄λ€. μ΄λ¬ν μ΄μ λ‘ μμμ λΆν° μλλ‘ μμ μλ μ½λκ° μ€νλλ€. λ³μλ Heapμ΄λΌλ 곡κ°μ μ μ₯λλ€.
π‘ μ΄μ²λΌ λ³μμ μΈμ΄ λ°νμ μ΄μ μ λ¨Όμ μ€νλκ²μΌλ‘ μ΄κ²μ΄ νΈμ΄μ€ν (Hositing)μ΄λΌκ³ νλ€.
π‘ μ¬μ€ letκ³Ό constλ λκ°μ΄ νΈμ΄μ€ν μ΄ λ°μνμ§λ§ μλ¬κ° μΆλ ₯λλ€ κ·Έκ²μ λμ€μ μμΈν μ¬λ €λ³Ό μμ μ΄λ€.
λ³μμ μ¬ν λΉμ΄λΌλ κ²μ μΌλ¨ ν¬κ² 2κ°μ§λ μμμΌνλ€. μμμ λ³μμ κ°λ μ΄λ€. μμ(Constant)λ λΆλ³μ κ°μ μ΄μΌκΈ°νλ€. λ³μ(Variable) κ³μ λ³νλ κ°μ΄λ€. JSμμ μμλ constλ₯Ό μ¬μ©νκ³ λ³μλ letκ³Ό varλ₯Ό μ¬μ©νλ€.
var name = "YHJ"; // λ³μ μ μΈκ³Ό ν λΉ (letλ κ°λ₯) console.log(name); // YHJμΆλ ₯ name = "KKK"; // λ³μμ μ¬ν λΉ console.log(name); // KKKμΆλ ₯
const name = "YHJ"; // μμ μ μΈκ³Ό ν λΉ console.log(name); // YHJμΆλ ₯ name = "KKK"; // μμμ μ¬ν λΉ console.log(name); // μ€λ₯μΆλ ₯
β μλ¬λ©μΈμ§κ° μΆλ ₯λλ€.
μλͺ μ£ΌκΈ°λΌκ³ ννμ ν΄μΌνλμ§λ λͺ¨λ₯΄κ² μ§λ§ λ³μλ μ΄μ κ°μ λ¨κ³λ‘ μ§νλλ€.
π‘ κ°μ μ μΈ -> κ°μ μ΄κΈ°ν -> κ°μ ν λΉ(μμλ μ¬κΈ°μ μ’ λ£) -> κ°μ μ¬ν λΉ
var name = "YHJ"; // κ°μ μ μΈκ³Ό ν λΉ console.log(name); // YHJμΆλ ₯ name = "KKK"; // κ°μ μ¬ν λΉ console.log(name); // KKKμΆλ ₯
π‘ μ μΈκ³Ό μ΄κΈ°νμ μμμ νΈμ΄μ€ν (Hositing)μ κ²°κ³Όκ° μ΄ν΄κ° μλμλ λΆλ€λ μν΄ λ¨κ³λ³λ‘ λνλ΄ λ³΄μλ€.
var name; // κ°μ μ μΈ (μ μΈμ΄ν λ°λ‘ κ°μ΄ μ΄κΈ°νλλ€) console.log(name) // κ°μ μ΄κΈ°ν undefined μΆλ ₯ (1-3μ νΈμ΄μ€ν λΆλΆμμλ λ°λ‘ μ΄λΆλΆμ΄ μΆλ ₯) name = "YHJ" // κ°μ ν λΉ console.log(name) // YHJμΆλ ₯ name = "KKK"; // κ°μ μ¬ν λΉ console.log(name); // KKKμΆλ ₯
JSμ½λ¦°μ΄λ μ’μ μ 보 κ°μ¬μ^^