μ»΄ν¨ν°λ CPUλ₯Ό μ¬μ©ν΄ μ°μ°νκ³ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©ν΄ λ°μ΄ν°λ₯Ό κΈ°μ΅νλ€.
λ©λͺ¨λ¦¬(memory)λ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ λ©λͺ¨λ¦¬ μ μ μ§ν©μ²΄λ‘ λ©λͺ¨λ¦¬μ νλμ ν¬κΈ°λ 1λ°μ΄νΈμ΄λ©°, μ»΄ν¨ν°λ λ©λͺ¨λ¦¬ μ μ ν¬κΈ°, μ¦ 1λ°μ΄νΈ λ¨μλ‘ λ°μ΄ν°λ₯Ό μ μ₯νκ±°λ μ½μ΄λ€μΈλ€.
κ° μ μ κ³ μ μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κ°λλ€. μ»΄ν¨ν°κ° κ³μ°νλ μ«μ κ°(2μ§μ)μ λ©λͺ¨λ¦¬ μμ μμμ μμΉμ μ μ₯λκ³ CPUλ μ΄ κ°μ μ½μ΄λ€μ¬ μ°μ°μ μννλλ° μ΄ λ CPUκ° μ°μ°ν΄μ λ§λ€μ΄μ§ κ°μ λ©λͺ¨λ¦¬μμ μ μ₯λμ΄μμ§λ§ μλ°μ€ν¬λ¦½νΈλ λ©λͺ¨λ¦¬ μ£Όμκ°μ μ§μ μ μΌλ‘ μ κ·Όν μκ° μλ€. κ·Έλ¬λ―λ‘ μ°λ¦¬λ λ³μλ₯Ό μ¬μ©ν΄ νλ‘κ·Έλλ° μΈμ΄μμ κ°μ μ μ₯νκ³ μ°Έμ‘°νλ€.
μ¦, λ³μλ νλμ κ°μ μ μ₯νκΈ° μν΄ ν보ν λ©λͺ¨λ¦¬ κ³΅κ° μ체 λλ κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ μλ³νκΈ° μν μ΄λ¦μ λ§νλ€.
λ³μ μ΄λ¦μ μλ³μ λΌκ³ λ νλλ°, μλ³μλ μ΄λ€ κ°μ ꡬλ³ν΄μ μλ³ν μ μλ κ³ μ ν μ΄λ¦μ λ§νλ€.
μλ³μλ κ°μ΄ μλλΌ λ©λͺ¨λ¦¬μ μ£Όμλ₯Ό κΈ°μ΅νκ³ μλκ²μ΄λ€.
λ³μλ₯Ό μ¬μ©νκΈ° μν΄μλ λ°λμ μ μΈμ΄ νμνλ€. λ³μ μ μΈμ΄λ λ³μλ₯Ό μμ±νλκ²μ μλ―Ένλ€. μλ°ν λ§νμλ©΄ κ°μ μ μ₯νκΈ° μν λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ λ³μ μ΄λ¦κ³Ό ν보λ λ©λͺ¨λ¦¬ 곡κ°μ μ£Όμλ₯Ό μ°κ²°ν΄μ κ°μ μ μ₯ν μ μκ² ν΄μ£Όλ κ²μ΄λ€.
var, let, constμ ν€μλλ₯Ό μ¬μ©ν΄ λ³μλ₯Ό μ μΈν μ μλ€.
var score; // λ³μ μ μΈ
μ λ³μ μ μΈλ¬Έμ λ³μ μ΄λ¦μ λ±λ‘νκ³ κ°μ μ μ₯ν λ©λͺ¨λ¦¬ 곡κ°μ ν보νλ€. λ³μλ₯Ό μ μΈν μ΄ν, λ³μμ κ°μ ν λΉνμ§ μμμ§λ§ ν보λ λ©λͺ¨λ¦¬ 곡κ°μλ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ undefinedλΌλ κ°μ΄ μ묡μ μΌλ‘ ν λΉλμ΄ μ΄κΈ°νλλ€.
λ³μ μ΄λ¦μ λΉλ‘―ν λͺ¨λ μλ³μλ μ€ν 컨ν μ€νΈμ λ±λ‘λλ€.
π§ μ€ν 컨ν μ€νΈλ?
μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μμ€μ½λλ₯Ό νκ°νκ³ μ€ννκΈ° μν΄ νμν νκ²½μ μ 곡νκ³ μ½λμ μ€ν κ²°κ³Όλ₯Ό μ€μ λ‘ κ΄λ¦¬νλ μμμ΄λ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ μμ€μ½λλ₯Ό ν μ€μ© μμ°¨μ μΌλ‘ μ€ννκΈ°μ μμ λ¨Όμ μμ€μ½λμ νκ° κ³Όμ μ κ±°μ³μ μμ€μ½λλ₯Ό μ€ννκΈ° μν μ€λΉλ₯Ό νλ€.
μ΄ λ νκ° κ³Όμ μμ μλ°μ€ν¬λ¦½νΈ μμ§μ λͺ¨λ μ μΈλ¬Έμ μμ€μ½λμμ μ°Ύμλ΄ λ¨Όμ μ€ννκ³ νκ° κ³Όμ μ΄ λλκ² λλ©΄ λ³μ μ μΈμ ν¬ν¨ν λͺ¨λ μ μΈλ¬Έμ μ μΈνκ³ μμ€μ½λλ₯Ό ν μ€μ© μμ°¨μ μΌλ‘ μ€ννλ€.
μ΄μ²λΌ λ³μ μ μΈλ¬Έμ΄ μ½λμ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ μλ°μ€ν¬λ¦½νΈ κ³ μ νΉμ§μ λ³μ νΈμ΄μ€ν (variable hoisting)μ΄λΌκ³ νλ€.
λ³μμ κ°μ ν λΉν λλ λμ μ°μ°μ = μ μ¬μ©νλ€.
λ³μ μ μΈκ³Ό ν λΉμ νλμ λ¬Έμ₯μΌλ‘ λ¨μΆν μ μλ€. νμ§λ§ λ³μ μ μΈμ μμ€μ½λκ° μμ°¨μ μΌλ‘ μ€νλλ μμ μΈ λ°νμ μ΄μ μ λ¨Όμ μ€νλμ§λ§, κ°μ ν λΉμ μμ€μ½λκ° μμ°¨μ μΌλ‘ μ€νλλ μμ μΈ λ°νμμ μ€νλλ€.
console.log(score); // undefined
var score = 80; // λ³μ μ μΈκ³Ό κ°μ ν λΉ
console.log(score); // 80
μμ μμ λ₯Ό μ€νν λ μ΄μ κ° undefinedκ° μ μ₯λμ΄ μλ λ©λͺ¨λ¦¬ 곡κ°μ μ§μ°κ³ κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉκ° 80μ μλ‘κ² μ μ₯νλκ²μ΄ μλλΌ μλ‘μ΄ λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ κ·Έ κ³³μ ν λΉ κ° 80μ μ μ₯νλ€.
μ¬ν λΉμ΄λ μ΄λ―Έ κ°μ΄ ν λΉλμ΄ μλ λ³μμ μλ‘μ΄ κ°μ λ λ€μ ν λΉνλ κ²μ λ§νλ€.
var ν€μλλ‘ μ μΈν λ³μλ κ°μ μ¬ν λΉν μ μλ€. μλ°ν λ§νμλ©΄ var ν€μλλ‘ μ μΈν λ³μλ μ μΈκ³Ό λμμ undefinedλ‘ μ΄κΈ°ν λκΈ°λλ¬Έμ λ³μμ μ²μμΌλ‘ κ°μ ν λΉνλ κ²λ μ¬μ€μ μ¬ν λΉμ΄λ€.
λ§μ½ κ°μ μ¬ν λΉν μ μμ΄μ λ³μμ μ μ₯λ κ°μ λ³κ²½ν μ μλ€λ©΄ λ³μκ° μλλΌ μμ(constant) λΌκ³ νλ€.
score λ³μ μ΄μ κ°μΈ undefinedμ 80μ μ΄λ€ μλ³μμλ μ°κ²°λμ΄ μμ§ μμΌλ―λ‘ λΆνμν κ°μ΄ λμ΄λ²λ¦¬λλ° μ΄ κ°λ€μ κ°λΉμ§ μ½λ ν°μ μν΄ λ©λͺ¨λ¦¬μμ μλ ν΄μ λλ€. λ¨, μΈμ ν΄μ λ μ§λ μμΈ‘ν μ μλ€.
π§ κ°λΉμ§ μ½λ ν°λ?
μ ν리μΌμ΄μ μ΄ ν λΉν λ©λͺ¨λ¦¬ 곡κ°μ μ£ΌκΈ°μ μΌλ‘ κ²μ¬νμ¬ λμ΄μ μ¬μ©λμ§ μλ λ©λͺ¨λ¦¬λ₯Ό ν΄μ νλ κΈ°λ₯μ λ§νλ€.. λ μ΄μ μ¬μ©λμ§ μλ λ©λͺ¨λ¦¬λ κ°λ¨ν λ§νμλ©΄ μ΄λ€ μλ³μλ μ°Έμ‘°νμ§ μλ λ©λͺ¨λ¦¬ 곡κ°μ μλ―Ένλ€. μλ°μ€ν¬λ¦½νΈλ κ°λΉμ§μ½λ ν°λ₯Ό λ΄μ₯νκ³ μλ 맀λμ§λ μΈμ΄λ‘μ κ°λΉμ§μ½λ ν°λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ λμλ₯Ό λ°©μ§νλ€.
π§ μΈλ§€λμ§λ μΈμ΄μ 맀λμ§λ μΈμ΄
νλ‘κ·Έλλ° μΈμ΄λ λ©λͺ¨λ¦¬ κ΄λ¦¬ λ°©μμ λ°λΌ μΈλ§€λμ§λ μΈμ΄μ 맀λμ§λ μΈμ΄λ‘ λΆλ₯ν μ μλ€.
CμΈμ΄κ°μ μΈλ§€λμ§λ μΈμ΄λ κ°λ°μκ° λͺ μμ μΌλ‘ λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ ν΄μ νκΈ° μν΄ malloc()κ³Ό free() κ°μ μ μμ€ λ©λͺ¨λ¦¬ μ μ΄κΈ°λ₯μ μ 곡νλ€. μ΄λ κ°λ°μκ° λ©λͺ¨λ¦¬ μ μ΄λ₯Ό μ£Όλν μ μμΌλ―λ‘ κ°λ°μμ μλμ λ°λΌ μ΅μ μ μ±λ₯μ ν보ν μ μμ§λ§ κ·Έ λ°λμ κ²½μ° μΉλͺ μ μΈ μ€λ₯λ₯Ό μμ°ν μ μλ€.
μλ°μ€ν¬λ¦½νΈ κ°μ 맀λμ§λ μΈμ΄λ λ©λͺ¨λ¦¬μ ν λΉ λ° ν΄μ λ₯Ό μν λ©λͺ¨λ¦¬ κ΄λ¦¬ κΈ°λ₯μ μΈμ΄ μ°¨μμμ λ΄λΉνκ³ κ°λ°μμ μ§μ μ μΈ λ©λͺ¨λ¦¬ μ μ΄λ₯Ό νμ©νμ§ μλλ€. μ¦, κ°λ°μκ° λͺ μμ μΌλ‘ λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ ν΄μ ν μ μλ€. λμ΄μ μ¬μ©νμ§ μλ λ©λͺ¨λ¦¬μ ν΄μ λ κ°λΉμ§ μ½λ ν°κ° μννλ©°, μ΄ λν κ°λ°μκ° κ΄μ¬ν μ μλ€.
μλ³μλ λ€μκ³Ό κ°μ λ€μ΄λ° κ·μΉμ μ€μν΄μΌ νλ€.
π§ μμ½μ΄
μμ½μ΄λ νλ‘κ·Έλλ° μΈμ΄μμ μ¬μ©λκ³ μκ±°λ, μ¬μ©λ μμ μΈ λ¨μ΄λ₯Ό λ»νλ€. μλ°μ€ν¬λ¦½νΈμμμ μμ½μ΄λ λ€μκ³Όκ°λ€.
π§ λ€μ΄λ° 컨벀μ
νλ μ΄μμ μμ΄λ¨μ΄λ‘ ꡬμ±λ μλ³μλ₯Ό λ§λ€ λ κ°λ μ± μ’κ² λ¨μ΄λ₯Ό ν λμ ꡬλΆνκΈ° μν΄ κ·μ ν λͺ λͺ κ·μΉμ΄λ€. λ€μκ³Ό κ°μ 4κ°μ§ μ νμ λ€μ΄λ° 컨벀μ μ΄ μμ£Ό μ¬μ©λλ€. μ½λ μ 체μ κ°λ μ±μ λμ΄λ €λ©΄ μΉ΄λ©μΌμ΄μ€μ νμ€μΉΌμΌμ΄μ€λ₯Ό λ°λ₯΄λκ²μ΄ μ 리νλ€.
// μΉ΄λ© μΌμ΄μ€ (camelCase) // λ³΄ν΅ μλ°μ€ν¬λ¦½νΈμ λ³μλ ν¨μμ μ΄λ¦ var firstName; // μ€λ€μ΄ν¬ μΌμ΄μ€ (snake_case) var first_name; // νμ€μΉΌ μΌμ΄μ€ (PascalCase) // λ³΄ν΅ μλ°μ€ν¬λ¦½νΈμ μμ±μ ν¨μλ ν΄λμ€μ μ΄λ¦ var FirstName; // νκ°λ¦¬μΈ μΌμ΄μ€ (typeHungarianCase) var strFirstName; // type + identifier var $elem = document.querySelector('myId'); // DOM Node const observable$ = fromEvent(document, 'click'); // RxJS μ΅μ λ²λΈ