μ΄ κΈμ λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive λ°νμΌλ‘ μ 리ν λ΄μ©μ λλ€.
4.1 λ³μλ 무μμΈκ°? μ νμνκ°?
μ»΄ν¨ν°λ CPUλ₯Ό μ¬μ©ν΄ μ°μ°νκ³ , λ©λͺ¨λ¦¬λ₯Ό μ¬μ©ν΄ λ°μ΄ν°λ₯Ό κΈ°μ΅νλ€. λ³μλ νλμ κ°μ μ μ₯νκΈ° μν΄ ν보ν λ©λͺ¨λ¦¬ κ³΅κ° μ체 λλ κ·Έ λ©λͺ¨λ¦¬ κ³΅κ° μ체 λλ κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ μλ³νκΈ° μν΄ λΆμΈ μ΄λ¦μ λ§ν©λλ€.
4.2 μλ³μ
λ³μ μ΄λ¦μ μλ³μλΌκ³ λ ν©λλ€. μλ³μλ μ΄λ€ κ°μ ꡬλ³ν΄μ μλ³ν μ μλ κ³ μ ν μ΄λ¦μ λ§ν©λλ€. μλ³μλ κ°μ΄ μλλΌ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κΈ°μ΅νκ³ μμ΅λλ€. μ¦ λ©λ‘μ΄ μ£Όμμ λΆμΈ μ΄λ¦μ΄λΌκ³ ν μ μμ΅λλ€. λ°λΌμ λ³μ, ν¨μ, νλμ€ λ±μ μ΄λ¦μ λͺ¨λ μλ³μμ λλ€.
4.3 λ³μ μ μΈ
λ³μλ₯Ό μ¬μ©νλ €λ©΄ λ°λμ μ μΈμ΄ νμν©λλ€. μ μΈ μμλ var, let, const ν€μλλ₯Ό μ¬μ©ν©λλ€. var ν€μλμ κ²½μ° λΈλ λ 벨 μ€μ½νκ° μλ ν¨μ λ 벨 μ€μ½νλ₯Ό μ§μνκΈ° λλ¬Έμ μ μ λ³μ μ μΈ μ μ¬κ°ν λΆμμ©μ΄ λ°μν μ μμΌλ―λ‘ μ£Όμν΄μΌ ν©λλ€
var score;
λ³μλ₯Ό μ μΈν μ΄ν, λ³μμ κ°μ ν λΉνμ§ μμμΌλ―λ‘ js μμ§μ μν΄ undefined λΌλ κ°μ΄ μ묡μ μΌλ‘ ν λΉλμ΄ μ΄κΈ°νλ©λλ€.
- μ μΈ λ¨κ³ : λ³μ μ΄λ¦μ λ±λ‘ν΄μ jsμμ§μ λ³μμ μ‘΄μ¬λ₯Ό μ립λλ€.
- μ΄κΈ°ν λ¨κ³ : κ°μ μ μ₯νκΈ° μν΄ λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ μ묡μ μΌλ‘ undefinedλ₯Ό ν λΉν΄ μ΄κΈ°ν ν©λλ€.
var ν€μλλ₯Ό μ¬μ©ν λ³μ μ μΈμ μ μΈ λ¨κ³μ μ΄κΈ°ν λ¨κ³κ° λμμ μ§νλ©λλ€.
4.4 λ³μ μ μΈμ μ€ν μμ κ³Ό λ³μ νΈμ΄μ€ν
console.log(score); // undefined
var score; // λ³μ μ μΈλ¬Έ
js μ½λλ μΈν°ν리ν°μ μν΄ ν μ€μ© μμ°¨μ μΌλ‘ μ€νλλ―λ‘ ReferenceErrorκ° λ°μν κ²μ²λΌ 보μ΄μ§λ§, undefinedκ° μΆλ ₯λ©λλ€. λ³μ μ μΈμ΄ μμ€μ½λκ° ν μ€μ© μμ°¨μ μΌλ‘ μ€νλλ μμ , μ¦ λ°νμμ΄ μλλΌ κ·Έ μ΄μ λ¨κ³μμ λ¨Όμ μ€νλκΈ° λλ¬Έμ λλ€.
js μμ§μ μμ€μ½λλ₯Ό μμ°¨μ μΌλ‘ μ€ννκΈ° μ μ λ¨Όμ μμ€μ½λμ νκ° κ³Όμ μ κ±°μΉλ©΄μ μ€ννκΈ° μν μ€λΉλ₯Ό ν©λλ€. λ³μ μ μΈλ¬Έμ΄ μ½λμ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ js κ³ μ μ νΉμ§μ λ³μ νΈμ΄μ€ν (variable hoisting)μ΄λΌκ³ ν©λλ€. var, let, const, function, function * , class ν€μλλ₯Ό μ¬μ©ν΄μ μ μΈνλ λͺ¨λ μλ³μ (λ³μ, ν¨μ, ν΄λμ€ λ±)μ νΈμ΄μ€ν λ©λλ€.
4.5 κ°μ ν λΉ
var score:; // λ³μ μ μΈ
score = 80; // κ° ν λΉ
var score = 80; // λ³μ μ μΈ, κ° ν λΉ λμμ
λ³μ μ μΈμ μμ€κ° μμ°¨μ μΌλ‘ μ€νλλ μμ μΈ λ°νμ μ΄μ μ λ¨Όμ μ€νλμ§λ§ κ°μ ν λΉμ μμ€μ½λκ° μμ°¨μ μΌλ‘ μ€νλλ μμ μΈ λ°νμμ μ€νλ©λλ€.
console.log(score); // undefined
score = 80;
var score;
console.log(score); // 80
4.6 κ°μ μ¬ν λΉ
var ν€μλλ‘ μ μΈν λ³μλ μ μΈκ³Ό λμμ undefinedλ‘ μ΄κΈ°ν λκΈ° λλ¬Έμ μλ°ν λ§νλ©΄ λ³μμ μ²μ κ°μ ν λΉνλ κ²λ μ¬ν λΉμ΄λΌκ³ ν μ μμ΅λλ€. μ¬ν λΉμ λ³μμ μ μ₯λ κ°μ λ€λ₯Έ κ°μΌλ‘ λ³κ²½ν©λλ€. κ°μ μ¬ν λΉ ν μ μλ€λ©΄ μμμ λλ€.
4.7 μλ³μ λ€μ΄λ° κ·μΉ
4κ°μ§ μ νμ λ€μ΄λ° μΌμ΄μ€λ€μ΄ μμ£Ό μ°μ λλ€.
var firstName; // camelCase
var first_name; // snake_case
var FirstName // PascalCase
var strFirstName; // type + indetifier
μλ°μ€ν¬λ¦½νΈμμλ μΌλ°μ μΌλ‘ λ³μλ ν¨μμ μ΄λ¦μλ μΉ΄λ© μΌμ΄μ€λ₯Ό, μμ±μ ν¨μμ ν΄λμ€μ μ΄λ¦μλ νμ€μΉΌ μΌμ΄μ€λ₯Ό μ¬μ©ν©λλ€.