κΈ°μ λ©΄μ μ λλΉν΄ κ°λ μ π° νμ ν¬κΈ°λ‘ μλΌ μ 리ν©λλ€.
κΉνλΈκ° κΆκΈνλ€λ©΄ λλ¬μ€μΈμ!
π κΉνλΈ λ³΄λ¬κ°κΈ° (Since 2023.05.10 ~ )
νμ΄ν ν¨μλ ES6μ μλ‘κ² μΆκ°λ λ¬Έλ²μΌλ‘, κΈ°μ‘΄ ν¨μ ννμμ λΉν΄ κ°λ¨νκ² μ¬μ© κ°λ₯ν©λλ€.
λν νμ΄ν ν¨μλ μ΅λͺ
ν¨μ
λ‘λ§ μ¬μ©ν μ μμ΄, νμ΄ν ν¨μλ₯Ό νΈμΆνκΈ° μν΄ ν¨μ ννμμ μ¬μ©ν©λλ€.
// μΌλ° ν¨μ
function foo() {
...
}
// νμ΄ν ν¨μ
const foo = () => {
...
}
μλ°μ€ν¬λ¦½νΈμμ λͺ¨λ ν¨μλ μ€νλ λλ§λ€ ν¨μ λ΄λΆμ this κ°μ²΄κ° μΆκ°λ©λλ€.
β Β μΌλ°ν¨μ
μΌλ° ν¨μλ ν¨μ μ μΈ μμ μ΄ μλ νΈμΆ μμ μ ν¨μκ° μ΄λ»κ² νΈμΆλμλμ§μ λ°λΌ thisμ λ°μΈλ©ν κ°μ²΄κ° λμ
μΌλ‘ κ²°μ λ©λλ€.
μΌλ° ν¨μμ this λ°μΈλ©
- ν¨μ λ΄λΆμμ μ€νμ β μ μ κ°μ²΄(window)λ₯Ό κ°λ¦¬ν΅λλ€.
- λ©μλ λ΄λΆμμ μ€νμ β λ©μλλ₯Ό μμ νκ³ μλ κ°μ²΄λ₯Ό κ°λ¦¬ν΅λλ€.
- μμ±μ ν¨μμμ μ€ν μ β μλ‘κ² λ§λ€μ΄μ§ κ°μ²΄λ₯Ό κ°λ¦¬ν΅λλ€.
β Β νμ΄ν ν¨μ
νμ΄ν ν¨μλ ν¨μλ₯Ό μ μΈ ν λ thisμ λ°μΈλ©ν κ°μ²΄κ° μ μ
μΌλ‘ κ²°μ λ©λλ€. λλ¬Έμ νμ΄ν ν¨μμ thisλ μΈμ λ μμ μ€μ½νμ thisλ₯Ό κ°λ¦¬ν΅λλ€.
λν call, apply, bind λ©μλλ₯Ό ν΅ν΄ thisλ₯Ό λ³κ²½ν μ μμ΅λλ€.
β Β μΌλ°ν¨μ
μμ±μ ν¨μλ‘ μ¬μ© κ°λ₯ν©λλ€.
β Β νμ΄ν ν¨μ
prototype νλ‘νΌν°λ₯Ό κ°μ§κ³ μμ§ μμ, μμ±μ ν¨μλ‘ μ¬μ©ν μ μμ΅λλ€.
// <------ μΌλ° ν¨μ ------>
function foo() {
this.num = 1234;
}
const fooA = new foo();
console.log(fooA.num); // 1234
// <------ νμ΄ν ν¨μ ------>
const arrFoo = () => {
this.num = 1234;
}
const fooB = new arrFoo(); // Error
arguments
λ ν¨μμ μ λ¬λ μΈμ κ°μ λ΄μ λ°°μ΄ κ°μ²΄λ₯Ό λ§νλ©°, ν¨μ λ΄λΆμμ μ κ·Όν μ μμ΅λλ€.
β Β μΌλ°ν¨μ
ν¨μκ° μ€νλ λ μ묡μ μΌλ‘ arguments λ³μκ° μ λ¬λμ΄ μ¬μ©ν μ μμ΅λλ€.
β Β νμ΄ν ν¨μ
νμ΄ν ν¨μλ arguments λ³μκ° μ λ¬λμ§ μλλ€.
// <------ μΌλ° ν¨μ ------>
function foo () {
console.log(arguments[0]);
}
foo("a", "b", "c"); // "a"
// <------ νμ΄ν ν¨μ ------>
const foo = () => {
console.log(arguments[0]);
}
foo("a", "b", "c");
// ReferenceError: arguments is not defined at foo
νμ΄ν ν¨μμμ argumentsκ°μ²΄λ λΆλͺ¨ μ€μ½νμ κ°μ μμ λ°κΈ° λλ¬Έμ, νμ΄ν ν¨μμ arguments λ³μλ₯Ό μ¬μ©νλ©΄ βUncaught ReferenceError: arguments is not defined
βμ κ°μ΄ argumentsλ₯Ό μ μν μ μλ€λ μ°Έμ‘°μλ¬κ° λ°μν©λλ€.
λ°λΌμ νμ΄ν ν¨μλ‘ argumentsμ μ κ·Όνλ €λ©΄ μλμ κ°μ΄ rest νλΌλ―Έν°
λ₯Ό μ¬μ©ν΄ λͺ
μμ μΌλ‘ μμ±νλ©΄ ν΄κ²°ν μ μμ΅λλ€.
const foo = (...arg) => {
const pick = arg[0];
console.log(pick); // "a"
}
foo("a", "b", "c");
πΒ μ°Έκ³ λ¬Έμ