κ°(value)λ μ(ννμ expression)μ΄ νκ°λμ΄ μμ±λ κ²°κ³Όλ₯Ό λ§νλ€.
λ³μλ νλμ κ°μ μ μ₯νκΈ° μν΄ ν보λ λ©λͺ¨λ¦¬ κ³΅κ° μ체 λλ κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ μλ³νκΈ° μν΄ λΆμΈ μ΄λ¦μ΄λ€. λ°λΌμ λ³μμ ν λΉλλ κ²μ κ°μ΄λ€.
κ°μ λ€μν λ°©λ²μΌλ‘ μμ±ν μ μμ§λ§ κ°μ₯ κΈ°λ³Έμ μΈ λ°©λ²μ 리ν°λ΄μ μ¬μ©νλ κ²μ΄λ€.
리ν°λ΄(literal)μ μ¬λμ΄ μ΄ν΄ν μ μλ λ¬Έμ λλ μ½μλ κΈ°νΈλ₯Ό μ¬μ©ν΄ κ°μ μμ±νλ νκΈ°λ²μ λ§νλ€. μ¬λμ΄ μ΄ν΄ν μ μλ λ¬Έμ, λλ 미리 μ½μλ κΈ°νΈλ±μΌλ‘ νκΈ°ν μ½λλ₯Ό λ»νλ€.
리ν°λ΄μ μ¬μ©νλ©΄ λ€μκ³Ό κ°μ΄ λ€μν μ’ λ₯(data type)μ κ°μ μμ±ν μ μλ€.
(λ°λ³΅κ°λ₯ν κ°μ²΄ μ΄ν°λ΄κ³Ό ν·κ°λ Έλ€)
ννμ(expression)μ κ°μΌλ‘ νκ°λ μ μλ λ¬Έ(statement)μ΄λ€. μ¦ ννμμ΄ νκ°λλ©΄ μλ‘μ΄ κ°μ μμ±νκ±°λ κΈ°μ‘΄ κ°μ μ°Έμ‘°νλ€.
λ¬Έ(statement)μ΄λ νλ‘κ·Έλ¨μ ꡬμ±νλ κΈ°λ³Έ λ¨μμ΄μ μ΅μ μ€νλ¨μμ΄λ€. λ¬Έμ μ§ν©μΌλ‘ μ΄λ€μ§ κ²μ΄ λ°λ‘ νλ‘κ·Έλ¨μ΄λ©°, λ¬Έμ μμ±νκ³ μμμ λ§κ² λμ΄νλ κ²μ΄ νλ‘κ·Έλλ°μ΄λ€.
λ¬Έμ μ¬λ¬ ν ν°μΌλ‘ ꡬμ±λλ€. ν ν°(token)μ΄λ λ¬Έλ²μ μΈ μλ―Έλ₯Ό κ°μ§λ©°, λ¬Έλ²μ μΌλ‘ λ μ΄μ λλ μ μλ μ½λμ κΈ°λ³Έμμλ₯Ό μλ―Ένλ€.
λ¬Έμ μ μΈλ¬Έ, ν λΉλ¬Έ, 쑰건문, λ°λ³΅λ¬Έ λ±μΌλ‘ ꡬλΆν μ μλ€.
// λ³μ μ μΈλ¬Έ
var x;
// ν λΉλ¬Έ
x = 5;
// ν¨μ μ μΈλ¬Έ
function foo() {}
// 쑰건문
if(x > 1) { console.log(x); }
// λ°λ³΅λ¬Έ
for(var i = 0 ; i<2 ; i++) { console.log(x); }
μΈλ―Έμ½λ‘ μ λ¬Έμ μ’ λ£λ₯Ό λνλΈλ€. μλ°μ€ν¬λ¦½νΈ μμ§μ μΈλ―Έμ½λ‘ μΌλ‘ λ¬Έμ΄ μ’ λ£ν μμΉλ₯Ό νμ νκ³ μμ°¨μ μΌλ‘ νλμ© λ¬Έμ μ€ννλ€. λ°λΌμ λ¬Έμ λλΌ λλ μΈλ―Έμ½λ‘ μ λΆμ¬μΌ νλ€. λ¨, 0κ° μ΄μμ λ¬Έμ μ€κ΄νΈλ‘ λ¬Άμ μ½λλΈλ‘({...}) λ€μλ μΈλ―Έμ½λ‘ μ λΆμ΄μ§ μλλ€.
νμ§λ§ λ¬Έμμ λμ λΆμ΄λ μΈλ―Έμ½λ‘ μ μ΅μ μ΄λ€. μ¦, μλ΅ κ°λ₯νλ€λκ²μ΄λ€. μ΄λ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μμ€μ½λλ₯Ό ν΄μν λ λ¬Έμ λμ΄λΌκ³ μμΈ‘λλ μ§μ μ μΈλ―Έμ½λ‘ μ μλμΌλ‘ λΆμ¬μ£Όλ μΈλ―Έμ½λ‘ μλ μ½μ κΈ°λ₯(ASI)μ΄ μ묡μ μΌλ‘ μνλκΈ° λλ¬Έμ΄λ€.
// λ³μ μ μΈλ¬Έμ κ°μΌλ‘ νκ°λ μ μμΌλ―λ‘ ννμμ΄ μλλ€.
var x;
// 1, 2, 1+2, x = 1+2 λ λͺ¨λ ννμμ΄λ€.
// x = 1+2 λ ννμμ΄λ©΄μ μμ ν λ¬Έμ΄κΈ°λ νλ€.
x = 1+2;
λ¬Έμλ ννμμΈ λ¬Έκ³Ό ννμμ΄ μλ λ¬Έμ΄ μλ€. λ λ¬Έμ ꡬλ³νλ κ°λ¨ν λ°©λ²μ λ³μμ ν λΉν΄ 보λκ²μ΄λ€.
π§ μλ£ κ°(completion value) μ΄λ?
ν¬λ‘¬ κ°λ°μ λꡬμμ ννμμ΄ μλ λ¬Έμ μ€ννλ©΄ μΈμ λ undefinedλ₯Ό μΆλ ₯νλ€. μ΄λ₯Ό μλ£ κ°μ΄λΌκ³ νλ€. μλ£ κ°μ ννμμ νκ° κ²°κ³Όκ° μλλ€.