μλ°μ€ν¬λ¦½νΈμμ ν¨μλ₯Ό μ μνλ λ°©λ²μ ν¬κ² λκ°μ§μ΄λ€. μΌλ° ν¨μλ₯Ό μ¬μ©νλ λ°©λ²κ³Ό νμ΄ν ν¨μλ₯Ό μ¬μ©νλ λ°©λ²μ΄λ€.
μΌλ° ν¨μ
function ν€μλλ₯Ό μ¬μ©νλ μΌλ° ν¨μλ ν¨μ μ μΈμκ³Ό ν¨μ ννμμ΄ μλ€.
ν¨μμ μΈμ
ν¨μ μ μΈμμ μλ°μ€ν¬λ¦½νΈμμ ν¨μλ₯Ό μ μΈνλ κ°μ₯ κΈ°λ³Έμ μΈ λ°©λ²μ΄λ€.
function main() {
console.log("Hello")
}
main() //ν¨μ νΈμΆ
function ν€μλ λ€μ νμμ μΌλ‘ ν¨μ μ΄λ¦μ μ κ³ λΈλ μμ ν¨μ λ΄μ©μ μ μΌλ©΄ λλ€. ν¨μλ₯Ό νΈμΆνκΈ° μν΄μ μ΄λ¦μ μ μΌλ©΄ λλ€.
ν¨μ μ μΈμμΌλ‘ μμ±λ μμ±λ ν¨μμ νΉμ§μ νΈμ΄μ€ν μ΄ λλ€λ κ²μ΄λ€. νΈμ΄μ€ν μ΄ λκΈ° λλ¬Έμ ν¨μ μ μΈλ³΄λ€ νΈμΆμ΄ λ¨Όμ λμ΄λ μλ¬κ° μκΈ°μ§ μκ³ , κ²°κ³Όκ° λμ¨λ€. νΈμ΄μ€ν μ΄ λκΈ° λλ¬Έμ ν¨μλ₯Ό μ΅μλ¨μΌλ‘ μ¬λ¦¬κΈ° λλ¬Έμ΄λ€.
foo()
function foo() {
console.log('foo');
}
// μ΄λ κ² ν΄λ foo κ° μλμ¨λ€.
μ΄λ¦μ κ°μ§ μλ ν¨μλ₯Ό λ§λ€κΈ° μν΄μ ν¨μ μ μΈμμ΄ μλλΌ ν¨μ ννμμ μ¬μ©νλ©΄ λλ€.
ν¨μ ννμ
ν¨μ ννμμ ν¨μ μ μΈμκ³Ό λ§€μ° μ μ¬νμ§λ§, μ΄λ¦μ΄ μλ ν¨μμΈ μ΅λͺ ν¨μλ₯Ό λ§λ€ μ μλ€. λκ°μ΄ function ν€μλλ₯Ό μ¬μ©νμ¬ ν¨μλ₯Ό μ μνμ§λ§ μλμ κ°μ΄ μ΄λ¦μ΄ μλ΅μ΄ κ°λ₯νλ€.
μ΅λͺ ν¨μλ₯Ό main μ΄λ λ³μμ ν λΉν΄μ£ΌμκΈ° λλ¬Έμ λ³μ μ΄λ¦μ ν¨μ μ΄λ¦μ²λΌ μ¬μ©νμ¬ ν¨μ νΈμΆμ΄ κ°λ₯νλ€.
const main = function() {
console.log("hello")
}
main() //hello
ν¨μ ννμμ νΉμ§μ ν¨μ μ μΈμκ³Ό λ€λ₯΄κ² νΈμ΄μ€ν μ΄ λμ§ μλλ€.
main() //Uncaught ReferenceError λ°μ
const main = function() {
console.log("hello")
}
νμ΄ν ν¨μ
νμ΄ν ν¨μλ ES6 λ²μ μμ λ±μ₯ν λ¬Έλ²μ΄λ€. κΈ°μ‘΄μ ν¨μ ννμμ ν¨μ¬ λ κ°λ¨ν λ¬Έλ²μΌλ‘ μμ±ν μ μκ² ν΄μ€λ€.
const main = () => {
console.log("hello")
}
main()
1. return μλ΅
const add = (a + b) => {
return a + b // μ½λκ° λ¨ ν μ€μ‘΄μ¬.
}
add()
// μ½λκ° νμ€λ§ μ‘΄μ¬ν μ μλμ κ°μ΄ λ³κ²½ κ°λ₯νλ€.
const add = (a + b) => a + b
add()
2. 맀κ°λ³μ μκ΄νΈ μλ΅
function print(text) {
console.log(text);
}
print("hi")
// λ§€κ° λ³μκ° νλμΌ κ²½μ° λ§€κ°λ³μλ₯Ό κ°μΈλ μκ΄νΈλ μλ΅μ΄ κ°λ₯νλ€.
const print = (text) => console.log(text)
print("hi")
//μκ΄νΈ μλ΅
const print = text => console.log(text)
print("hi")
맀κ°λ³μκ° λ³΅μκ° μ΄κ±°λ, νλλ μμ μμ 맀κ°λ³μμ μκ΄νΈκ° νμνλ€.
3. κ°μ²΄λ μκ΄νΈλ‘ ν λ² κ°μΈμ€λ€.
const getObject = () => {
return {name: "hello"}
}
getObject()
// κ°μ²΄μ μ€κ΄νΈμ ν¨μμ μ€κ΄νΈκ° ν·κ°λ¦΄ μ μμΌλ―λ‘ κ°μ²΄λ μκ΄νΈλ‘ νλ² κ°μΈμ€λ€.
const getObject = () => ({name: "hello"})
console.log(getObject()) // hello
4. νμ΄ν ν¨μμμ κ°λ³μΈμ
function ν€μλλ₯Ό μ¬μ©ν μΌλ°ν¨μμμ 맀κ°λ³μλ‘ λ°λ‘ λͺ μνμ§ μμλ arguments λ³μλ₯Ό μ묡μ μΌλ‘ μ λ¬ λ°λλ€.
arguments λ³μλ ν¨μκ° μ λ¬λ°μ μΈμλ₯Ό λ΄κ³ μλ λ°°μ΄ννμ κ°μ²΄μ΄λ€.
arguments λ³μλ μΈμμ κ°―μκ° μ ν΄μ§μ§ μμ κ°λ³μΈμκ° μ λ¬λλ ν¨μλ₯Ό μΈ λ μ μ©νκ² μ¬μ©ν μ μλ€.
νμ§λ§ νμ΄ν ν¨μλ μΌλ° ν¨μμ λ€λ₯΄κ² arguments λ₯Ό μ λ¬ λ°μ§ μλλ€.
νμ΄ν ν¨μμμ κ°λ³μΈμλ₯Ό μ²λ¦¬νκΈ° μν΄μ λλ¨Έμ§ λ§€κ°λ³μ ꡬ문μ νμ©νλ©΄ λλ€.
function main() {
arguments // ν¨μκ° μ λ¬λ°μ μΈμλ₯Ό λ΄κ³ μλ λ°°μ΄ννμ κ°μ²΄μ΄λ€.
console.log(arguments[1]) //2
}
main(1, 2, 3)
//νμ΄ν ν¨μλ argumentsλ₯Ό λ°μ§ μλλ€.
const main = () => {
console.log(arguments) // Uncaught ReferenceError κ° λ°μνλ€.
}
main(1, 2, 3)
//νμ΄ν ν¨μμμ κ°λ³μΈμλ₯Ό μ²λ¦¬νκ³ μΆμΌλ©΄ 맀κ°λ³μμ λλ¨Έμ§ λ§€κ°λ³μꡬ문μ νμ©νλ€.
const main = (...args) => {
console.log(args) //[1, 2, 3]
}
main(1, 2, 3)
5. νμ΄ν ν¨μμμ this
νμ΄ν ν¨μμμ this λ μΌλ° ν¨μμμ this μ λ€λ₯΄κ² λμνλ€.
μΌλ°ν¨μ
μΌλ°ν¨μμ thisλ μμ λ§μ thisλ₯Ό κ°κ³ μκ³ ,(μ€ν 컨ν μ€νΈμμ this λ°μΈλ©μ νκΈ° λλ¬Έ) ν¨μλ₯Ό νΈμΆν μμ μμ κ²°μ μ΄ λλ€.
μ¦, μΌλ° ν¨μμ thisλ ν¨μμ μ μΈμμΉμ μκ΄ μμ΄, ν¨μλ₯Ό νΈμΆνλ λ°©λ²μ λ°λΌ λ¬λΌμ§λ€.
(μΌλ° ν¨μμ thisλ ν¨μλ₯Ό νΈμΆν κ°μ²΄λ₯Ό κ°λ₯΄ν¨λ€.)
const object = {
name: 'μ½λ©',
main: function () {
console.log(this);
},
};
object.main();
// μΌλ° ν¨μμμ this λ ν¨μλ₯Ό νΈμΆν κ°μ²΄μ΄λ€.
// main ν¨μλ₯Ό νΈμΆν κ°μ²΄λ objectμ΄λ―λ‘ this λ objectκ° λλ€.
νμ΄ν ν¨μ
νμ΄ν ν¨μλ μμ λ§μ this λ₯Ό κ°κ³ μμ§ μλ€. νμ΄ν ν¨μμμ thisμ μ κ·Όνλ©΄ μΈλΆλ‘λΆν° thisλ₯Ό κ°μ Έμμ μ¬μ©νκ² λλ€.
μ¦, νμ΄ν ν¨μμ this λ ν¨μμ νΈμΆ λ°©λ²μ μκ΄μμ΄, ν¨μλ₯Ό μ μΈν μμΉμ μν΄ κ²°μ λλ€.
νμ΄ν ν¨μμ thisλ ν¨μλ₯Ό κ°μΈλ μμ μ€μ½νμ thisλ₯Ό κ·Έλλ‘ κ°μ Έμμ μ¬μ©νλ€.
const object = {
name: 'μ½λ©',
main: function () {
console.log(this);
},
mainArrow: () => {
console.log(this);
}
};
object.mainArrow(); // window
// νμ΄ν ν¨μλ μμ λ§μ thisλ₯Ό κ°μ§ μκΈ° λλ¬Έμ λ°μ μλ thisλ₯Ό κ°μ Έμ€κ² λκ³ ,(λ°κΉ₯ μ€μ½ν)
// λ°μ μλ this λ μ μ κ°μ²΄μΈ windowκ° λνλκ² λλ€.
const object2 = {
name: 'μ½λ©',
mainArrow: object.mainArrow,
};
object2.mainArrow(); // object2μ λ΄μ©μ΄ μλ, window κ°μ²΄ λ΄μ©μ΄ λμ€κ² λλ€.
// νμ΄ν ν¨μμ thisλ ν¨μκ° μ μΈλ μμΉμ μν΄ μ μλλ€.
// ν¨μκ° νΈμΆλ λ°©λ²κ³Όλ 무κ΄νλ€.
const object = {
name: 'μ½λ©',
main: function () {
const innerFunction = function() {
console.log(this)
};
innerFunction()
},
};
object.main() // window κ°μ²΄κ° λμ¨λ€.
//innerFunction() μ μ΄λ€ν κ°μ²΄ μμ΄ νΈμΆλκΈ° λλ¬Έμ΄λ€.
const object = {
name: 'μ½λ©',
main: function () {
const innerFunction = () => {
console.log(this)
};
innerFunction()
},
};
object.main() // object κ°μ²΄κ° λμ¨λ€.
// νμ΄ν ν¨μμΈ innerFunction() μ this λ κ²μ κ°μΈκ³ μλ main ν¨μμ thisλ₯Ό κ°μ Έμ€κ² λκ³
// μ΄λ object μ΄κΈ° λλ¬Έμ΄λ€.
6. νμ΄ν ν¨μλ bind μ¬μ© λΆκ°
μΌλ° ν¨μμμ bindλ₯Ό νμ©ν΄ this κ°μ λͺ μν μ μλ€. νμ§λ§ νμ΄ν ν¨μμμ thisλ₯Ό μ¬μ©νμ§ λͺ»νλ€. μλνλ©΄ λ°μΈλ©ν μμ λ§μ this κ° μκΈ° λλ¬Έμ΄λ€.
const object = {
name: 'μ½λ©',
main: function () {
const innerFunction = function() {
console.log(this);
}.bind({hi: 'hi'});
innerFunction()
},
};
object.main(); // {hi: 'hi'}
νμ΄ν ν¨μμ this κ°μ νμ΄ν ν¨μκ° μ μ λλ μμ μμ μ μλλ μμΉμ μν΄ κ²°μ μ΄ λκ³ μ΄νμλ λ³κ²½λμ§ μκΈ° λλ¬Έμ΄λ€. λ°λΌμ μ무리 bind λ‘ thisλ₯Ό μ ν΄μ£ΌλλΌλ 무μνκ² λλ€.
const object = {
name: 'μ½λ©',
main: function () {
const innerFunction = (() => {
console.log(this)
}).bind({hi: 'hi'});
innerFunction()
},
};
//object.main() // {name: 'μ½λ©', main: f} object κ°μ²΄κ° λμ¨λ€.
7. νμ΄ν ν¨μ μΈλΆ ν¨μμ μν₯μ λ°μ§ μλλ€.
const object = {
name: 'μ½λ©',
main: function () {
setTimeout(function() {
console.log(this);
}, 1000)
},
};
object.main();
//1μ΄ ν window κ°μ²΄ μΆλ ₯ - setTimeout ν¨μμ thisλ window κ°μ²΄λ‘ μ€μ λΌ μμ.
const object = {
name: 'μ½λ©',
main: function () {
setTimeout(() => {
console.log(this);
}, 1000)
},
};
object.main();
// {name: 'μ½λ©', main: f} object κ°μ²΄κ° λμ¨λ€.
// νμ΄ν ν¨μλ μμ μ κ°μΈλ μ€μ½νμ this λ₯Ό κ°μ Έμ€κΈ° λλ¬Έμ
// setTimeout λ΄λΆ ꡬμ±μ μκ΄μμ΄ λ§λ€μ΄μ€ object κ°μ²΄κ° λμ¨λ€.
'JavaScript Programming' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JavaScript - μ€ν 컨ν μ€νΈμ λ μ컬 νκ²½ (0) | 2024.12.19 |
---|---|
JavaScript - if λ¬Έ Truthy μ Falsy νκ° λ°©μ (1) | 2024.12.18 |
JavaScriptμμ 1 < x < 3μ΄ νμ μ°ΈμΈ μ΄μ - Number λ΄μ₯ ν¨μ (0) | 2024.12.17 |
λκΈ