π Chapter 1 : νμ
Table of Contents
- ESMA νμ€ λͺ
μΈμ 5.1λ₯Ό νμΈν΄λ³΄μ.
- μ΄ λͺ μΈμ μλ‘λ μκ³ λ¦¬μ¦μμ μ¬μ©λλ λͺ¨λ κ°μ μ΄ μ μμ μ μν νμ λͺ©λ‘μ€ νλμ ν΄λΉνλ€.
- νμ μ ECMAScript μΈμ΄ νμ κ³Ό λͺ μΈ νμ μΌλ‘ νμ λΆλ₯λλ€.
- ECMAScript κ°λ°μκ° ECMAScript μΈμ΄λ₯Ό μ΄μ©νμ¬ μ§μ μ‘°μνλ κ°λ€μ νμ μ΄ λ°λ‘ ECMAScript μΈμ΄ νμ μ΄λ€.
- ECMAScript μΈμ΄ νμ
μλ
Undefined
,null
,Boolean
,String
,Number
,Object
κ° μλ€.
π― νμ , κ·Έ μ€μ²΄λ₯Ό μ΄ν΄νμ.β
- νμ λ³λ‘ λ΄μ¬λ νΉμ±μ μ λλ‘ μκ³ μμ΄μΌ κ°μ λ€λ₯Έ νμ μΌλ‘ λ³ννλ λ°©λ²μ μ νν μ΄ν΄ν μ μλ€.
- μ΄λ€ ννλ‘λ κ±°μ λͺ¨λ μλ°μ€ν¬λ¦½νΈ νλ‘κ·Έλ¨μμ κ°μ λ³ν(coercion)μ΄ μΌμ΄λλ―λ‘ νμ μ νμ€νκ² μΈμ§νκ³ μ¬μ©νλ κ²μ΄ μ’λ€.
42
λ₯Ό λ¬Έμμ΄λ‘ λ³΄κ³ μμΉ 1μμ"2"
λΌλ λ¬Έμλ₯Ό μΆμΆνλ €λ©΄, λ¨Όμ μ« μ42
-> λ¬Έμμ΄"42"
λ‘ λ³κ²½(κ°μ λ³ν)ν΄μΌ νλ€.
π― λ΄μ₯ νμ β
- μλ°μ€ν¬λ¦½νΈμλ λ€μ 7κ°μ§ λ΄μ₯ νμ μ΄ μλ€.
null, undefined, boolean, number, string, object, symbol(ES6λΆν° μΆκ°)
object
λ₯Ό μ μΈν μ΄λ€μ μμ νμ (Primitives) μ΄λ€.- κ° νμ μ typeof μ°μ°μλ‘ μ μ μλ€.
- νμ§λ§ typeof λ°ν κ°μ νμ 7κ°μ§ λ΄μ₯ νμ μ€ νλλ μλλ€.
- 7κ°μ§ λ΄μ₯ νμ κ³Ό 1:1λ‘ μ ννλ 맀μΉλμ§ μλλ€.
typeof undefined === 'undefined'; // true
typeof true === 'boolean'; // true
typeof 42 === 'number'; // true
typeof "42" === 'string' // true
typeof { life: 42 } === 'object'; // true
// ES6λΆν° μΆκ°
typeof Symbol() === 'symbol'; // true
- μμ μ 6κ° νμ μ μμ μ λͺ μΉκ³Ό λμΌν λ¬Έμμ΄μ λ°ννλ€.
null
μ λνtypeof
μ°μ° κ²°κ³Όλ κΌ λ²κ·Έμ²λΌ 보μΈλ€.
typeof null === 'object'; // true
typeof null === 'null'; // false
- λ²κ·Έμ²λΌ 보μ΄μ§λ§ μ΄κ² μ λ΅. (κ±°μ 20λ λμ μ΄ λ²κ·Έλ μ΄μ μμ μμ λμλ λ€λ₯Έ λ²κ·Έκ° μ겨 μ λμκ°λ μΉ μννΈμ¨μ΄κ° λ©μΆ°λ²λ¦΄ κ²½μ°κ° λ§μμ μμΌλ‘λ ν΄κ²°λ κ°λ₯μ±μ μλ€.)
- κ·Έλ μ νμ
μΌλ‘
null
κ°μ μ νν νμΈνλ €λ©΄ μ‘°κ±΄μ΄ νλ λ νμνλ€.
const a = null;
(!a && typeof a === 'object'); // true
null
μ falsyν μ μΌν μμ κ°μ΄μ§λ§, νμ μobject
μΈ νΉλ³ν μ‘΄μ¬μ΄λ€.- λν
typeof
κ° λ°ννλ λ¬Έμμ΄μ νλ λ μ‘΄μ¬νλ€.
typeof function a(){ /* ... */ } === "function"; // true
typeof function a(){ /* ... */ } === "object"; // false
typeof
λ°ν κ°μ 보면 λ§μΉfunction
μ΄ μ΅μμ λ 벨μ λ΄μ₯ νμ μ²λΌ 보μ΄μ§λ§ λͺ μΈλ₯Ό μ½μ΄λ³΄λ©΄ μ€μ λ‘λobject
μ 'νμ νμ 'μ΄λ€.- ꡬ체μ μΌλ‘ ν¨μλ 'νΈμΆ κ°λ₯ν κ°μ²΄(Callable Object)'λΌκ³ λͺ μλμ΄ μλ€.
- κ·Έλ κΈ° λλ¬Έμ ν¨μλ κ°μ²΄λΌμ μ μ©νλ€. 무μλ³΄λ€ ν¨μμ νλ‘νΌν°λ₯Ό λ μ μλ€.
function a(b, c) {
/* ... */
}
- ν¨μμ μ μΈλ μΈμ κ°μλ ν¨μ κ°μ²΄μ
length
νλ‘νΌν°λ‘ μ μ μλ€.
a.length; // 2
- ν¨μ aλ μΈμ λ κ°(b, c)λ₯Ό κ°μ§λ―λ‘ 'ν¨μμ κΈΈμ΄'λ 2λ€.
- λ°°μ΄λ κ·Έλ₯ κ°μ²΄μ΄λ€.
typeof [1, 2, 3] === 'object'; // true
- λ°°μ΄μ μ«μ μΈλ±μ€λ₯Ό κ°μ§λ©°,
length
νλ‘νΌν°κ° μλμΌλ‘ κ΄λ¦¬λλ λ±μ μΆκ° νΉμ±μ μ§λ, κ°μ²΄μ 'νμ νμ 'μ΄λΌ ν μ μλ°.