D+44
- νμ΄ν ν¨μ, ꡬ쑰λΆν΄ ν λΉ, this -
(νμ΄ν ν¨μ, ꡬ쑰λΆν΄ ν λΉ, this)
νμ΄ν ν¨μ
ν¨μ ννμ
const add = function (x, y) {
return x + y
}
λ§μ½ 맀κ°λ³μ x, yλ₯Ό μ λ ₯λ°μ λ μλ₯Ό λν κ°μ 리ν΄νλ ν¨μλ₯Ό λ§λ€κ³ μ ν λ
μ°λ¦¬λ μμ μ½λλ₯Ό μκ°ν κ²μ΄λ€.
ν΄λΉμ½λλ κΈ°μ‘΄μ μ°λ¦¬κ° μκ³ μλ ν¨μ ννμμΌλ‘ μ°λ¦¬λ ν΄λΉ ν¨μ ννμμ λμ± κ°λ¨νκ² ννν μ μλ€.
νμ΄ν ν¨μ
const add = (x, y) => {
return x + y
}
λ°λ‘ νμ΄ν ν¨μμ΄λ€.
const add = (x, y) => x + y
const add = (x, y) => (x + y) // O, μ μ μλ(μκ΄νΈ μ¬μ©κ°λ₯)
const add = (x, y) => { x + y } // X, undefined λ¦¬ν΄ (μ€κ΄νΈ μ¬μ© λΆκ°λ₯)
νμ΄ν ν¨μλ function ν€μλλ₯Ό νμ΄ν(=>)λ‘ λμ²΄κ° κ°λ₯νλ©°,
ν¨μ μμ returnλ¬Έλ§ μμ κ²½μ°μ return μλ΅μ΄ κ°λ₯νλ€.
λν νλΌλ―Έν°κ° ν κ°μΌ κ²½μ°μ μκ΄νΈλ μλ΅μ΄ κ°λ₯νλ€.
(λ¨, μ€κ΄νΈ({})λ μ¬μ©μ΄ λΆκ°λ₯νλ€)
νμ΄ν ν¨μ νΉμ§
•call, apply, bindλ₯Ό μ¬μ©ν μ μλ€.
•νμ΄ν ν¨μμ μ€νμ thisλ₯Ό κ²°μ μ§μ§ μλλ€.
νμ΄ν ν¨μ λ§λ€μ΄λ³΄κΈ°
const adder = function(x) {
return function(y) {
return x + y
}
}
adder(5)(7) // 12
μ¬κΈ° xκ°κ³Ό yκ°μ μ λ ₯λ°μ λ μλ₯Ό λν΄ λ¦¬ν΄μν€λ ν¨μ ννμμΌλ‘ ννλ ν¨μμμ
νμ΄ν ν¨μλ‘ λνλ΄ λ³΄λ €κ³ νλ€.
1 > function ν€μλλ₯Ό νμ΄ν(=>)λ‘ λ체ν΄μ€λ€.
const adder = (x) => {
return (y) => {
return x + y
}
}
2 > μμͺ½λΆν° μμλλ‘ returnμ μμ μ€λ€.
const adder = (x) => {
return (y) => x + y
}
β¬οΈ
const adder = x => y => x + y
μμ±!
ꡬ쑰 λΆν΄ ν λΉ
•λ°°μ΄μ΄λ κ°μ²΄μ μμ±μ ν΄μ²΄νμ¬ κ·Έ κ°μ κ°λ³ λ³μμ λ΄μ μ μκ² νλ JavaScript ννμ
ꡬ쑰 λΆν΄ ν λΉ
var x = [1, 2, 3, 4, 5];
var [y, z] = x; // ꡬ쑰 λΆν΄ ν λΉ
console.log(y); // 1
console.log(z); // 2
ν λΉλ¬Έμ μ’λ³μμ μ¬μ©νμ¬, μλ λ³μμμ μ΄λ€ κ°μ λΆν΄ν΄ ν λΉν μ§λ₯Ό μ μνλ€.
this ν€μλ
•ν¨μ μ€νμ νΈμΆλ°©λ²μ μν΄ κ²°μ λλ νΉλ³ν κ°μ²΄
•ν¨μ μ€νμ κ²°μ λλ―λ‘ μ€νλλ λ§₯λ½μ λ°λΌ λ€λ₯΄κ² κ²°μ λ¨
'this'λ₯Ό λ°μΈλ©νλ 5κ°μ§ ν¨ν΄
ν¨ν΄ | λ°μΈλ©λλ κ°μ²΄ | μ€λͺ |
Method νΈμΆ | λΆλͺ¨ κ°μ²΄ | νλμ κ°μ²΄μ κ°κ³Ό μ°κ΄λ λ©μλλ₯Ό λ¬Άμ΄μ μ¬μ©ν λ μ£Όλ‘ μ¬μ©ν¨ |
new ν€μλλ₯Ό μ΄μ©ν μμ±μ νΈμΆ | μλ‘κ² μμ±λ (new) μΈμ€ν΄μ€ κ°μ²΄ | κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ μ£Όλ‘ νμ©ν¨ |
.call λλ .apply νΈμΆ | 첫λ²μ§Έ μΈμλ‘ μ λ¬λ κ°μ²΄ | this κ°μ νΉμ ν λ μ¬μ©νλ©° νΉν applyμ κ²½μ° λ°°μ΄μ μ리먼νΈλ₯Ό νμ΄μ μΈμλ‘ λκΈ°κ³ μ ν λ μ μ©ν¨ |
ν¨ν΄ | λ°μ΄λ©λλ κ°μ²΄ (λΈλΌμ°μ ) | λ°μΈλ©λλ κ°μ²΄ (node.js) |
Global | window | module.exports |
Function νΈμΆ | window | global |
Method νΈμΆ
λ©μλ νΈμΆμ κ°μ²΄μ λ΄κΈ΄ ν¨μ, μ¦ λΆλͺ¨κ° μλ κ²μ΄λΌκ³ λ³Ό μ μλ€.
μ¦, 'κ°μ²΄.λ©μλ()'κ³Ό κ°μ΄ κ°μ²΄ λ΄μμ λ©μλλ₯Ό νΈμΆνλ λ°©λ²μ μλ―Ένλ€.
μ΄λ, λΆλͺ¨κ° μλ λ μμμ λ©μλλ₯Ό νΈμΆν κ²½μ° thisλ μ§κ³λΆλͺ¨ μ€λΈμ νΈλ₯Ό κ°μ Έμ¨λ€.
let counter1 = {
value: 0,
increase: function() {
this.value++ // λ©μλ νΈμΆμ ν κ²½μ°, thisλ counter1μ κ°λ¦¬ν΅λλ€
},
decrease: function() {
this.value--
},
getValue: function() {
return this.value
}
}
counter1.increase()
counter1.increase()
counter1.increase()
counter1.decrease()
counter1.getValue() // 2
μμ±μ νΈμΆ
new μ°μ°μλ‘ μμ λ ν¨μ μμμ thisλ₯Ό λνλ΄λ©° μ΄λμ thisλ μμ±μλ₯Ό λνλΈλ€.
class Counter {
constructor() {
this.value = 0; // μμ±μ νΈμΆμ ν κ²½μ°, thisλ new ν€μλλ‘ μμ±ν Counterμ μΈμ€ν΄μ€μ
λλ€
}
increase() {
this.value++
}
decrease() {
this.value--
}
getValue() {
return this.value
}
}
let counter1 = new Counter() // μμ±μ νΈμΆ
counter1.increase()
counter1.getValue() // 1
'μλ > Code-States' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[D+45] ESlint μ€μΉνκΈ° (0) | 2020.10.21 |
---|---|
[D+44] call, apply, bind λ©μλ (0) | 2020.10.20 |
[D+43] node.jsμ κ΄λ ¨ λꡬ (0) | 2020.10.19 |
[D+42] Pre Courseλ₯Ό λ§μΉλ©°... (0) | 2020.10.18 |
[D+38 - 41] κ°μΈμ λΉμκ° (0) | 2020.10.14 |
λκΈ