μ«μ, λ¬Έμμ΄, λΆλ¦¬μΈ(Boolean), null, undefined, μ¬λ³Ό(symbol)
κ°μ²΄, λ°°μ΄, ν¨μ, λ μ§(Date), μ κ·ννμ(RegExp), Map, WeakMap, Set, WeakSet
λ³΄ν΅ 'κΈ°λ³Ένμ κ°μ 볡μ¬νκ³ μ°Έμ‘°νμ μ£Όμκ°μ 볡μ¬νλ€'κ³ μ€λͺ νλ€.
κ·Έλ¬λ, μλ°ν λ§νλ©΄ μ΄λ€ λ°μ΄ν° νμ μ΄λ λ³μμ ν λΉνκΈ° μν΄μλ μ£Όμκ°μ 볡μ¬ν΄μΌ νκΈ° λλ¬Έμ κΈ°λ³Ένλ κ²°κ΅ μ£Όμκ°μ μ°Έμ‘°νλ€κ³ ν μ μλ€.
μ°¨μ΄μ μ΄λΌλ©΄ κΈ°λ³Ένμκ°μ΄ λ΄κΈ΄ μ£Όμκ°μ λ°λ‘ 볡μ¬
νλ λ°λ©΄, μ°Έμ‘°νμκ°μ΄ λ΄κΈ΄ μ£Όμκ°λ€λ‘ μ΄λ£¨μ΄μ§ λ¬Άμμ κ°λ¦¬ν€λ μ£Όμκ°μ 볡μ¬
νλ€λ κ²μ΄λ€.
μ΄λ‘ μΈν΄ κΈ°λ³Έμ μΌλ‘ κΈ°λ³Ένμ λΆλ³κ°, μ°Έμ‘°νμ κ°λ³κ°μ΄λΌλ μ°¨μ΄μ μ΄ λ°μνκ² λλ€.
0 λλ 1λ§ ννν μ μλ νλμ λ©λͺ¨λ¦¬ μ‘°κ°μ λΉνΈ(bit)λΌκ³ νλ©°, κ° λΉνΈλ κ³ μ ν μλ³μλ₯Ό ν΅ν΄ μμΉλ₯Ό νμΈν μ μλ€.
1λ°μ΄νΈ(bite)λ 8κ°μ λΉνΈλ‘ ꡬμ±λμ΄ μκ³ , μμνλ λΉνΈμ μλ³μλ‘ μμΉλ₯Ό νμ
ν μ μλ€.
λͺ¨λ λ°μ΄ν°λ λ°μ΄νΈ λ¨μμ μλ³μ, μ¦ λ©λͺ¨λ¦¬ μ£Όμκ°μ ν΅ν΄ μλ‘ κ΅¬λΆλκ³ μ°κ²°ν μ μλ€.
var a = "abc"
λ³μ("abc")λ λ³ν μ μλ λ°μ΄ν°λ₯Ό λ§νλ€.
μ¬κΈ°μ λ°μ΄ν°λ μ«μ, λ¬Έμμ΄, κ°μ²΄, λ°°μ΄ λ±μ΄ λͺ¨λ ν΄λΉλλ€.
ννΈ, μλ³μ(a)λ μ΄λ€ λ°μ΄ν°λ₯Ό μλ³νλ λ° μ¬μ©νλ μ΄λ¦, μ¦ λ³μλͺ
μ λ§νλ€.
var a;
λ©λͺ¨λ¦¬μμ λΉμ΄ μλ κ³΅κ° νλλ₯Ό ν보νλ€.
μ΄ κ³΅κ°μ μ΄λ¦(μλ³μ)μ aλΌκ³ μ§μ νλ€.
μ΄ κ³΅κ°μ μ£Όμλ₯Ό κ°μ§λ€.
var a; // λ³μ a μ μΈ
a = "abc"; // λ³μ aμ λ°μ΄ν° ν λΉ
var a = "abc"; // λ³μ μ μΈκ³Ό λ°μ΄ν° ν λΉμ ν λ¬Έμ₯μΌλ‘ νν
μμ λ³μλ₯Ό μ μΈνλ©΄μ λ³μ μμμ ν보νλ€.
λ€μμΌλ‘ ν΄λΉ λ³μμ λ°μ΄ν°λ₯Ό ν λΉνκΈ° μν΄ λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μν λ³λμ κ³΅κ° μ¦, λ°μ΄ν° μμμ ν보ν΄μΌ νλ€.
λ°μ΄ν° μμμ λ¬Έμμ΄ "abc"λ₯Ό μ μ₯νκ³ λ°μ΄ν° μμμ μ£Όμλ₯Ό λ³μ μμμ μ μ₯νλ€.
μ¦, λ³μ μμμ κ°μ μ§μ λμ
νμ§ μκ³ μ£Όμκ°μ μ μ₯
νλ νμμΌλ‘ ν λ¨κ³λ₯Ό λ κ±°μΉλ κ²μ΄λ€.
μμμ μ΄λ€ λ°μ΄ν° νμ
μ΄λ (μμ κ°μ κΈ°λ³Έν λ°μ΄ν° νμ
μ‘°μ°¨λ) λ³μμ ν λΉνκΈ° μν΄μλ μ£Όμκ°μ 볡μ¬ν΄μΌ νλ€κ³ λ§νλ μ΄μ μ΄λ€.
μ΄λ λ°μ΄ν° λ³νμ μμ λ‘κ² νκ³ λ©λͺ¨λ¦¬λ₯Ό λμ± ν¨μ¨μ μΌλ‘ κ΄λ¦¬
νκΈ° μν¨μ΄λ€.
λ°μ΄ν°λ₯Ό λ³νν λλ§λ€ λ³μ μμμ κ°μ μ§μ λμ
νλ€λ©΄ λ³νν λ°μ΄ν°μ ν¬κΈ°μ λ°λΌ ν보λ 곡κ°μ λ리λ λ± λΉν¨μ¨μ μΈ μμ
μ λ°λ³΅ν΄μΌ νλ€.
μ΄λ₯Ό λ°©μ§νκΈ° μν΄ κΈ°μ‘΄ λ¬Έμμ΄μ μ΄λ€ λ³νμ κ°νλ μκ΄ μμ΄ λ¬΄μ‘°κ±΄ μλ‘ λ§λ€μ΄ λ³λμ λ°μ΄ν° μμμ μ μ₯ν ν κ·Έ 'μ£Όμκ°'μ λ³μ μμμ μ μ₯νλ€.
κ°μ λ§₯λ½μΌλ‘ μ€λ³΅λ λ°μ΄ν°λ₯Ό λ€λ£° λλ μ£Όμκ°μ μ μ₯νλ νμμ μ·¨νλ©΄ ν¨μ¬ ν¨μ¨μ μΌλ‘ μ²λ¦¬ν μ μλ€.
μμμ κΈ°λ³Ένμ λΆλ³κ°μ΄κ³ , μ°Έμ‘°νμ κ°λ³κ°μ΄λΌκ³ λ§νλ€.
κ·Έλ λ€λ©΄ μ¬κΈ°μ λΆλ³κ°κ³Ό κ°λ³κ°μ 무μμ μλ―Ένλ κ²μΌκΉ?
μμ vs λΆλ³κ°
λ³μμ μμλ₯Ό ꡬλΆ
μ§λ λ³κ²½ κ°λ₯μ±μ λμμ λ³μ μμ λ©λͺ¨λ¦¬μ΄λ€.
νλ² λ°μ΄ν° ν λΉμ΄ μ΄λ€μ§ λ³μ μμμ λ€λ₯Έ λ°μ΄ν°λ₯Ό μ¬ν λΉν μ μλμ§μ μ¬λΆκ° κ΄κ±΄μ΄λ€.
λ°λ©΄μ, λΆλ³μ± μ¬λΆλ₯Ό ꡬλΆ
ν λμ λ³κ²½ κ°λ₯μ±μ λμμ λ°μ΄ν° μμ λ©λͺ¨λ¦¬μ΄λ€.
κΈ°λ³Έν λ°μ΄ν° νμ
λ³μ μμμ λ°μ΄ν°λ₯Ό ν λΉν ν λ€λ₯Έ λ°μ΄ν°λ₯Ό μ¬ν λΉνλ €κ³ νλ€.
μ΄λ κΈ°μ‘΄μ λ°μ΄ν°λ₯Ό λ€λ₯Έ λ°μ΄ν°λ‘ λ°κΏ μ μλ€.
λ°κΎΈκ³ μ νλ λ°μ΄ν°κ° λ°μ΄ν° μμ μ΄λκ°μ μλ€λ©΄ μ΄λ₯Ό μ°Ύμμ κ·Έ μ£Όμκ°μ λ³μ μμμ μλ‘κ² ν λΉνκ³ , μλ€λ©΄ λ°μ΄ν° μμμ ν΄λΉ λ°μ΄ν°λ₯Ό μλ‘ λ§λ ν κ·Έ μ£Όμκ°μ λ³μ μμμ μλ‘κ² ν λΉνλ€.
λ°λΌμ, μ΄ κ²½μ°μ λ³μ 곡κ°μ λ€λ₯Έ λ°μ΄ν°λ₯Ό μ¬ν λΉν μ μκΈ° λλ¬Έμ μμκ° μλ 'λ³μ'μ΄μ§λ§, μ΄λ₯Ό μν΄ λ³μ μμμ ν λΉλ λ°μ΄ν° μμμ κ°μ λ³κ²½ν μλ μκ³ μλ‘ λ§λ€μ΄ μ¬ν λΉν΄μΌ νλ―λ‘ ν΄λΉ λ°μ΄ν° νμ μ 'λΆλ³κ°'μ΄λΌκ³ ν μ μλ€.
κΈ°λ³Έν λ°μ΄ν° νμ
μ κ°λΉμ§ 컬λ ν
λΉνμ§ μλ ν μμν λ³νμ§ μλλ€.
μ΄λ€ λ°μ΄ν°λ μμ μ μ£Όμλ₯Ό μ μ₯νλ λ³μκ° νλλ μκ² λλ©΄(μ°Έμ‘° μΉ΄μ΄νΈκ° 0μ΄ λλ©΄) κ°λΉμ§ 컬λ ν°μ μκ±° λμμ΄ λλ€.
μκ±°λ λ©λͺ¨λ¦¬λ λ€μ μλ‘μ΄ κ°μ ν λΉν μ μλ λΉ κ³΅κ°μ΄ λλ€.
μ°Έμ‘°ν λ°μ΄ν° νμ
μ°Έμ‘°ν λ°μ΄ν° νμ
μ 'κ°μ²΄μ λ³μ(νλ‘νΌν°) μμ'μ λ³λλ‘ κ°μ§κ³ μλ€.
κΈ°λ³Ένμ λ³μ μμκ³Ό λ°μ΄ν° μμμ κ°μ§ λΏμ΄μ§λ§, μ°Έμ‘°νμ μ¬κΈ°μ κ°μ²΄μ λ³μ μμμ μΆκ°λ‘ κ°μ§κ³ μλ€.
μμ μ°Έμ‘°νμ΄ κ°λ³κ°μ΄λΌκ³ ν κ²μ, μ¬κΈ°μ λ°μ΄ν° μμμ μ μ₯λ κ°μ κΈ°λ³Έν λ°μ΄ν° νμ
κ³Ό λ§μ°¬κ°μ§λ‘ λͺ¨λ λΆλ³κ°
μ΄μ§λ§, κ°μ²΄μ λ³μ μμμλ λ€λ₯Έ λ°μ΄ν°λ₯Ό μΌλ§λ μ§ μ¬ν λΉν μ μμ
μ μλ―Ένλ€.
μ€μ²© κ°μ²΄
var obj = {
x: 3,
arr: [3, 4, 5],
};
μ°Έμ‘°ν λ°μ΄ν°μ λ³μ(νλ‘νΌν°)μ λ€μ μ°Έμ‘°ν λ°μ΄ν°λ₯Ό ν λΉνλ κ²μ λ§νλ€.
μμ μ΄λ€ λ°μ΄ν° νμ
μ΄λ λ³μμ ν λΉνκΈ° μν΄μλ μ£Όμκ°μ 볡μ¬ν΄μΌ νκΈ° λλ¬Έμ κΈ°λ³Ένλ κ²°κ΅ μ£Όμκ°μ μ°Έμ‘°νλ€κ³ ν μ μλ€κ³ νλ€.
λ°λΌμ, λ³μλ₯Ό 볡μ¬νλ κ³Όμ μ κΈ°λ³Έν λ°μ΄ν°μ μ°Έμ‘°ν λ°μ΄ν° λͺ¨λ κ°μ μ£Όμ(λ°μ΄ν° μμμ μ£Όμκ°)λ₯Ό λ°λΌλ³΄κ² λλ€λ μ μμλ λμΌνλ€.
κ·Έλ¬λ, κΈ°λ³Ένμ κ°μ΄ λ΄κΈ΄ μ£Όμκ°(λ°μ΄ν° μμμ μ£Όμκ°)μ λ°λ‘ 볡μ¬νλ λ°λ©΄, μ°Έμ‘°νμ κ°μ΄ λ΄κΈ΄ μ£Όμκ°λ€βκ°μ²΄μ λ³μ μμμ μ£Όμκ°λ€βλ‘ μ΄λ£¨μ΄μ§ λ¬Άμμ κ°λ¦¬ν€λ μ£Όμκ°(λ°μ΄ν° μμμ μ£Όμκ°)μ 볡μ¬νκΈ° λλ¬Έμ λ³μ λ³΅μ¬ μ΄νμ λμμμ ν° μ°¨μ΄κ° λ°μνλ€.
κ°μ²΄μ νλ‘νΌν°λ₯Ό λ³κ²½νμ λ
var a = 10;
var b = a;
var obj1 = { c: 10, d: "ddd" };
var obj2 = obj1;
b = 15;
obj2.c = 20;
console.log(a !== b); // true
console.log(obj1 === obj2); // true
μ΄μ²λΌ λ³μ λ³΅μ¬ μ΄ν κ°μ λ³κ²½νμ λ κΈ°λ³Ένμ κ²½μ° λ³΅μ¬ μ νμ λ³μμ κ°μ΄ λ¬λΌμ§μ§λ§ μ°Έμ‘°νμ κ²½μ° κ·Έ κ°μ΄ λ¬λΌμ§μ§ μλλ€.
κΈ°λ³Ένμ κ°μ΄ λ΄κΈ΄ μ£Όμκ°μ λ°λ‘ 볡μ¬νκΈ° λλ¬Έμ λ³μλ₯Ό 볡μ¬ν ν κ°μ΄ λ³κ²½λλ©΄ 볡μ¬ν λ³μ μμμλ μλ‘μ΄ λ°μ΄ν°λ₯Ό κ°μ§λ λ°μ΄ν° μμμ μ£Όμκ°μ΄ ν λΉ
λκΈ° λλ¬Έμ λ³΅μ¬ μ νμ λ³μμ κ°μ΄ λ¬λΌμ§κ² λλ€.
κ·Έλ¬λ, μ°Έμ‘°νμ λ³μ λ³΅μ¬ μ΄ν κ°μ΄ λ³κ²½λμ΄λ μ΄λ λ³κ²½λ κ°(μ¦, μλ‘μ΄ λ°μ΄ν°λ₯Ό κ°μ§λ λ°μ΄ν° μμμ μ£Όμκ°)μ 볡μ¬ν λ³μ μμ κ·Έ μμ²΄κ° μλλΌ κ°μ²΄μ λ³μ(νλ‘νΌν°) μμμ ν λΉλκΈ° λλ¬Έμ 볡μ¬ν λ³μ μμμ μ΄μ κ³Ό λ€λ¦μλ μ£Όμλ₯Ό κ°μ§κ³ μκ² λλ€.
μ¦, μ¬μ ν λ³΅μ¬ μ νμ λ³μ λͺ¨λ κ°μ μ£Όμκ°μ κ°μ§κ³ μκ³ , κ·Έμ κ·Έ μ£Όμκ°μ μ΄λ£¨κ³ μλ κ°μ²΄μ λ³μ(νλ‘νΌν°) μμμ΄ λ³ν κ²
μ΄κΈ°μ λ³΅μ¬ μ νμ λ³μ λͺ¨λ κ°μ κ°μΌλ‘ λ³νκ² λκ³ κ²°κ΅ λμ κ°μ μ°¨μ΄κ° μκΈ°μ§λ μλ κ²μ΄λ€.
κ°μ²΄ μ체λ₯Ό λ³κ²½νμ λ
λ¨, μ°Έμ‘°νμ κ²½μ°μλ κ·Έμ κ°μ²΄μ νλ‘νΌν°λ₯Ό λ³κ²½νλ κ²μ΄ μλλΌ μμ λ³μμ μλ‘μ΄ κ°μ²΄λ₯Ό ν λΉν¨μΌλ‘μ¨ κ·Έ κ°μ μ§μ λ³κ²½νλ€λ©΄ λΆλ³κ°
μ΄ λ μλ μλ€.
μ¦, μ°Έμ‘°ν λ°μ΄ν°λ₯Ό κ°λ¦¬μΌ κ°λ³κ°μ΄λΌκ³ μ€λͺ
ν λμ 'κ°λ³'μ
μ°Έμ‘°ν λ°μ΄ν° μ체λ₯Ό λ³κ²½ν κ²½μ°κ° μλλΌ κ·Έ λ΄λΆμ νλ‘νΌν°λ₯Ό λ³κ²½ν λλ§ μ±λ¦½νλ κ²μ΄λ€.
μ°Έμ‘°ν λ°μ΄ν°λ λ°μ΄ν° μ체λ₯Ό λ³κ²½νκ³ μ νλ©΄(μλ‘μ΄ λ°μ΄ν°λ₯Ό ν λΉνκ³ μ νλ©΄) κΈ°λ³Έν λ°μ΄ν°μ λ§μ°¬κ°μ§λ‘ κΈ°μ‘΄μ λ°μ΄ν°λ λ³νμ§ μλλ€.
κ·Έλ¬λ―λ‘ λ΄λΆ νλ‘νΌν°λ₯Ό λ³κ²½ν νμκ° μμ λλ§λ€ λ§€λ² μλ‘μ΄ κ°μ²΄λ₯Ό λ§λ€μ΄ μ¬ν λΉνκΈ°λ‘ κ·μΉμ μ νκ±°λ μλμΌλ‘ μλ‘μ΄ κ°μ²΄λ₯Ό λ§λλ λꡬλ₯Ό νμ©νλ€λ©΄ κ°μ²΄ μμ λΆλ³μ±μ ν보ν μ μλ€.
λ¬Έμ
var user = { // μ°Έμ‘°ν λ°μ΄ν°(κ°μ²΄)
name: "syong",
gender: "female",
};
var changeName = (user, newName) => {
var newUser = user; // λ³μ 볡μ¬
newUser.name = newUser; // κ° λ³κ²½
return newUser;
};
var user2 = changeName(user, "syongsyong");
if (user !== user2) {
console.log("user μ λ³΄κ° λ³κ²½λμμ΅λλ€.");
}
console.log(user.name, user.name === user2.name); // syongsyong, true
console.log(user === user2); // true
λΆλ³ κ°μ²΄κ° νμν λνμ μΈ μ¬λ‘λ‘λ user μ 보μ λ³κ²½ μ¬λΆλ₯Ό κ°μ§ν΄ μλ΄νκ³ μ ν λλ₯Ό λ€ μ μλ€.
μ΄ κ²½μ° user μ 보λ₯Ό λ΄κ³ μλ κ°μ²΄κ° λ³κ²½λλ©΄ μ΄λ₯Ό κ°μ§ν΄ μλ΄ν΄μΌ νλλ° κ°μ²΄μ κ°λ³μ±μΌλ‘ μΈν΄ user κ°μ²΄λ₯Ό 볡μ¬ν κ°μ²΄μ νλ‘νΌν°κ° λ³ν΄λ κΈ°μ‘΄μ user κ°μ²΄κΉμ§ ν¨κ» λ³ν΄λ²λ € κ·Έ λ³κ²½ μ¬λΆλ₯Ό κ°μ§ν μκ° μμ΄ λ¬Έμ κ° λλ€.
ν΄κ²° λ°©λ² 1: μμ μλ‘μ΄ κ°μ²΄ λ§λ€κΈ°
var changeName = (user, newName) => {
return {
name: newName,
gender: user.gender,
};
};
var user2 = changeName(user, "syongsyong");
μ΄λκΈ°μ‘΄μ user κ°μ²΄λ₯Ό λΆλ³ κ°μ²΄λ‘ λ§λ€κΈ° μν΄ κ°μ²΄μ λ΄λΆ νλ‘νΌν°λ₯Ό μμ ν΄μΌ ν λ λ΄λΆ νλ‘νΌν°λ§μ μμ νλ κ² μλλΌ μμ μλ‘μ΄ κ°μ²΄λ₯Ό λ§λ€ μ μλ€.
λ€λ§, μ΄λ λ³κ²½ν νμκ° μλ κΈ°μ‘΄ κ°μ²΄μ νλ‘νΌν°(gender)κΉμ§ νλμ½λ©μΌλ‘ μ
λ ₯ν΄ λΉν¨μ¨μ μ΄λ€.
ν΄κ²° λ°©λ² 2: μμ 볡μ¬
var copyObject = (target) => {
var result = {};
for (var prop in target) {
result[prop] = target[prop];
}
return result;
};
var user2 = copyObject(user);
user2.name = "syongsyong";
νλμ½λ© λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μμ 볡μ¬λ₯Ό ν μ μλ€.
κ·Έλ¬λ μ΄λ λ§ κ·Έλλ‘ μμ 볡μ¬λΌλ μ μμ νκ³λ₯Ό κ°μ§λ€.
μμ 볡μ¬λ λ°λ‘ μλ λ¨κ³μ κ°λ§ 볡μ¬νλ λ°©λ²μ΄κ³ , κΉμ 볡μ¬λ λ΄λΆμ λͺ¨λ κ°λ€μ νλνλ μ°Ύμμ μ λΆ λ³΅μ¬νλ λ°©λ²μ΄λ€.
μμ 볡μ¬μ λ¬Έμ μ (μ€μ²© κ°μ²΄μ κ²½μ°)
var user = {
name: "syong",
urls: {
portfolio: "http://github.com/abc",
blog: "http://blog.com",
facebook: "http://facebook.com/abc",
};
};
var user2 = copyObject(user);
user2.name = "syongsyong";
console.log(user.name === user2.name); // false
user2.urls.blog = "";
console.log(user.urls.blog === user2.urls.blog); // true
μ΄μ²λΌ user κ°μ²΄μ μ§μ μν νλ‘νΌν°μΈ nameμ λν΄μλ 볡μ¬ν΄μ μμ ν μλ‘μ΄ λ°μ΄ν°κ° λ§λ€μ΄μ§ λ°λ©΄, ν λ¨κ³ λ λ€μ΄κ°μ κ°μ²΄μ λ λ€λ₯Έ νλ‘νΌν°μΈ urlsμ 'λ΄λΆ νλ‘νΌν°'λ€μ κΈ°μ‘΄ λ°μ΄ν°λ₯Ό κ·Έλλ‘ μ°Έμ‘°νκ³ μμμ μ μ μλ€.
μ€μ κ°μ²΄μ λν κΉμ 볡μ¬
var user2 = copyObject(user);
var user2.urls = copyObject(user.urls); // μΆκ° β
user2.name = "syongsyong";
console.log(user.name === user2.name); // false
user2.urls.blog = "";
console.log(user.urls.blog === user2.urls.blog); // false
μ€μ²© κ°μ²΄λ₯Ό μλ²½ν λΆλ³ κ°μ²΄λ‘ λ§λ€κΈ° μν΄μλ κΉμ 볡μ¬λ₯Ό μνν΄μΌ νλ€.
μ¦, μ€μ²© κ°μ²΄μ νλ‘νΌν° μ€μμ κ·Έ κ°μ΄ μ°Έμ‘°ν λ°μ΄ν°μΌ κ²½μ° λ€μ κ·Έ λ΄λΆμ νλ‘νΌν°λ€κΉμ§ 볡μ¬ν΄μΌ νλ€.
κ°μ²΄μ κΉμ 볡μ¬λ₯Ό μννλ λ²μ© ν¨μ
var copyObjectDeep = (target) => {
var result = {};
if (typeof target === "object" && target !== null) {
for (var prop in target) {
result[prop] = copyObjectDeep(target[prop]);
}
} else {
result = target;
}
return result;
};
var user2 = copyObjectDeep(user);
JSONμ νμ©ν κ°λ¨ν κΉμ 볡μ¬
var copyObjectViaJSON = (target) => JSON.parse(JSON.stringify(target));
var user2 = copyObjectViaJSON(user);
JSON λ¬Έλ²μ μ΄μ©ν΄ κ°λ¨νκ² κΉμ 볡μ¬λ₯Ό ν μλ μλ€.
λ€λ§, μ΄λ __proto__
λ getter/setter
λ±κ³Ό κ°μ΄ JSONμΌλ‘ λ³κ²½ν μ μλ νλ‘νΌν°λ€μ 볡μ¬ν μ μλ€λ νκ³λ₯Ό κ°μ§λ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μλμΌλ‘ undefinedλ₯Ό λΆμ¬νλ κ²½μ°
κ°μ λμ
νμ§ μμ λ³μ
, μ¦ λ°μ΄ν° μμμ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ§μ νμ§ μμ μλ³μμ μ κ·Όν λκ°μ λμ νμ§ μμ λ°°μ΄
λ°°μ΄μμ λΉμ΄μλ μμμ 'undefined'λΌλ ν λΉν μμλ μΆλ ₯ κ²°κ³Όκ° λ€λ₯΄λ€.
λΉμ΄μλ μμλ forEach, map, filter, reduce λ± μνμ κ΄λ ¨λ λ§μ λ°°μ΄ λ©μλλ€μ μν λμμμ μ μΈλλ€.
κ°μ΄ μ§μ λμ§ μμ μΈλ±μ€λ μμ§ μ‘΄μ¬νμ§ μλ νλ‘νΌν°μ μ§λμ§ μκ³ , μ‘΄μ¬νμ§ μλ νλ‘νΌν°μ λν΄μλ λΉμ°ν μνν μ μλ κ²μ΄λ€.
μ΄μ²λΌ κ°μΌλ‘μ¨ μ΄λκ°μ ν λΉλ undefinedλ μ€μ‘΄νλ λ°μ΄ν°μΈ λ°λ©΄, μλ°μ€ν¬λ¦½νΈ μμ§μ΄ λ°νν΄μ£Όλ undefinedλ λ¬Έμ κ·Έλλ‘ κ°μ΄ μμμ λνλΈλ€λ κ²μ μ μ μλ€.
νΌλμ νΌνκΈ° μν΄μλ undefinedλ νμμ κ²½μ°μλ§ μ°μ΄λλ‘ νκ³ , κ°μ΄ μμμ λνλ΄κ³ μ ν λλ undefined λμ nullμ μ¬μ©νλλ‘ νλ€.
λ€λ§, μλ°μ€ν¬λ¦½νΈ μ체 λ²κ·Έλ‘ μΈν΄ typeof nullμ objectμ΄κΈ° λλ¬Έμ μ΄λ€ λ³μμ κ°μ΄ nullμΈμ§ μ¬λΆλ₯Ό νλ³νκΈ° μν΄μλ μΌμΉ μ°μ°μ(===)λ₯Ό μ¬μ©ν΄μΌ νλ€. λλ± μ°μ°μ(==) x
var n === null;
console.log(n == undefined); // true
console.log(n == null); // true
console.log(n === undefined); // false
console.log(n === null); // true β