π Js μμ ν¨μ
μ€μ½ν, μ€ν 컨ν μ€νΈ, ν΄λ‘μ , μμ±μ ν¨μμ μν κ°μ²΄ μμ±, λ©μλ, this λ°μΈν , νλ‘ν νμ , λͺ¨λνμ κΉμ κ΄λ ¨μ΄ μκΈ° λλ¬Έμ js ν¨μλ μ λ§ μ€μν κ°λ μ΄λ€!
νλ‘κ·Έλλ°μμ ν¨μλ₯Ό μ¬μ©νλ μ΄μ ?
var x = prompt();
var y = prompt();
if (Number(x) === Number(y)){
console.log(true)
}else{
console.log(false)
}
function is_same(a, b){
return Number(a) === Number(b)
}
console.log(is_same(x, y))
ν¨μμ κ°μ₯ ν° μ₯μ μ μ½λμ μ¬μ¬μ©μ΄λ€.
ν¨μ μμ΄ λκ°λ₯Ό λΉκ΅ν΄λ³΄λ κ²½μ°λ₯Ό μκ°ν΄λ³΄λ©΄ if / else λ₯Ό λ°λ³΅μ μΌλ‘ μ¨μΌνμ§λ§
ν¨μλ₯Ό νλ² μμ±νκΈ°λ§ νλ€λ©΄ λΉκ΅λ₯Ό ν΄μΌνλ μν©μμ λ§λ€μ΄λ ν¨μλ₯Ό νΈμΆνκ³ λ§€κ°λ³μ x, y λ₯Ό λκ²¨μ£ΌκΈ°λ§ νλ©΄ λλ€.
1. ν¨μ 리ν°λ΄
μλ°μ€ν¬λ¦½νΈμ ν¨μλ κ°μ²΄ νμ μ κ°μ΄λ€.
ννμμ ν΅ν΄μ νκ° λκ³ , κ·Έ νκ°μ κ²°κ³Όλ‘ κ°μ²΄ νμ μ κ°μ΄ ν λΉλλ€.
λ°λΌμ ν¨μλ λ³μμ 리ν°λ΄λ‘ κ°μ ν λΉνλ κ² μ²λΌ, ν¨μ 리λ¬νΈλ‘ μμ±ν μ μλ€.
μΌλ° κ°μ²΄λ μμ± ν νΈμΆν μ μμ§λ§ ν¨μλ νΈμΆν μ μλ€.
π λ³μμ ν¨μ 리ν°λ΄ ν λΉ
var my_function = function(x, y){
return x + y;
}
var new_function = my_function();
console.log(new_function(2, 4)); // 6
2. ν¨μ μ μ
ν¨μλ₯Ό μ μνλ©΄, μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄μ νκ°κ° λκ³ ν¨μ κ°μ²΄ κ°μ΄ λλ€.
ν¨μ μ μΈλ¬Έμ΄ νκ° λλ©΄ μλ³μκ° μμ±λκ³ ν¨μ κ°μ²΄κ° ν λΉλλ€
λ³μλ μ μΈλκ³ , ν¨μλ μ μ λλ€.
1οΈβ£ ν¨μ μ μΈλ¬Έ
// ν¨μ μ μΈλ¬Έμ μ΄λ¦μ μλ΅ν μ μλ€.
function (x, y){
return x + y;
}
function add(x, y){
return x + y;
}
// ν¨μ 리ν°λ΄μ μ΄λ¦μ μλ΅ν μ μλ€.
var my_function = function(x ,y){
ruturn x + y;
}
ν¨μ μ μΈλ¬Έμ λ³μ μ μΈλ¬Έκ³Ό λμΌνκ² ννμμ΄ μλ λ¬Έμ΄λ€.
μ¦, ν¨μ μ μΈλ¬Έ νλλ‘λ κ°μ νκ°ν μ μλ€λ κ²μ΄λ€
ννμμΈ λ¬Έκ³Ό ννμμ΄ μλλ¬Έμ ꡬλ³νκΈ° κ°μ₯ μ¬μ΄ λ°©λ²μ,
λ³μμ ν λΉν΄λ³΄λ κ²μ΄λ€.
μλμ μμ λλ€ ννμμ μλ λ¬Έμ΄κ³ , κ°μΌλ‘ νκ°λμ§ μκΈ° λλ¬Έμ λ³μμ ν λΉν μ μλ€.
// λ³μμ ννμμ ν΅ν΄ νκ°λμ§ μμ κ° ν λΉ, μλͺ»λ λ°©λ²
var num = var x;
// λ³μμ ν¨μ 리ν°λ΄ ννμμ΄ μλ ννμμ΄ μλ λ¬ΈμΈ ν¨μ μ μΈλ¬Έμ ν λΉ
var new_function = function add(x, y){
return x + y;
}
console.log(new_function(2, 4)); // 6
λ³μμ ννμμ΄ μλ λ¬Έ μ¦, κ°μΌλ‘ νκ°λ μ μλ λ¬Έμ ν λΉνλλ° μ μμ μΌλ‘ λμνλ€.
π§ μ μ μμ μΌλ‘ λμν κΉ?
{} μ μ΄λ¦μ΄ μλ ν¨μ 리ν°λ΄μ΄ μ€μμ ννμ΄κΈ° λλ¬Έμ΄λ€
// μ΄λ¦μ΄ μλ ν¨μ 리ν°λ΄
function add(x, y){
return x + y;
}
μ½λμ λ¬Έλ§₯μ λ°λΌμ μ΄λ¦μ΄ μλ ν¨μ 리ν°λ΄μ΄ ν¨μ μ μΈλ¬Έ λλ ν¨μ 리ν°λ΄ ννμμΌλ‘ ν΄μλ μ μκΈ° λλ¬Έμ΄λ€.
{} μ μ΄λ¦ μλ ν¨μ 리ν°λ΄μ΄ λ¨λ μΌλ‘ μ°μ΄λ λ¬Έλ§₯μμλ, ν¨μ μ μΈλ¬ΈμΌλ‘ ν΄μλλ€.
{} μ μ΄λ¦ μλ ν¨μ 리ν°λ΄μ΄ κ°μΌλ‘ νκ°λμ΄μΌ νλ λ¬Έλ§₯(ν λΉ μ°μ°μμ μ°λ³μΈ νΌμ°μ°μ) μμλ, ν¨μ 리ν°λ΄ ννμμΌλ‘ ν΄μλλ€.
// κ°μΌλ‘ νκ°λμ΄μΌ νλ λ¬Έλ§₯μμλ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄μ μ°λ³μ μλ ν¨μ μ μΈλ¬Έμ΄ ν¨μ 리ν°λ΄ ννμμΌλ‘ ν΄μλλ€.
var new_function = function add(x, y){
return x + y;
}
// μ΄λ κ² μμ±νκ²κ³Ό λμΌνκ² ν΄μλλ€.
var new_function = function (x, y){
return x + y;
}
μ΄λ¬ν μ΄μ λ‘ ννμμ΄ μλ λ¬Έμ ν λΉν΄λ μ μμ μΌλ‘ λμνλ κ²μ΄λ€.
π μ μΈλ¬Έκ³Ό 리ν°λ΄ ννμμ μ€μν μ°¨μ΄
function say_hello(){
console.log("hello!");
}
say_hello(); // hello!
(function say_hello(){ console.log("hello!"); })
say_hello(); // ReferenceError : say_hello is not defined
κ·Έλ£Ή μ°μ°μ () λ΄μ μμΌλ―λ‘ ν¨μ μ μΈλ¬Έμ νΌμ°μ°μλ‘ ν΄μλμ΄ ν¨μ 리ν°λ΄ ννμμΌλ‘ ν΄μλλ€.
νΌμ°μ°μλ κ°μΌλ‘ νκ°λ μ μμ΄μΌ νλ€.
νμ§λ§ μμμ μ΄ν΄ λ΄€λ―μ΄ ν¨μ μ μΈλ¬Έμ ννμμ΄ μλ λ¬Έμ΄λΌμ κ°μΌλ‘ νκ°λμ§ μκΈ° λλ¬Έμ undefined λ₯Ό νΈμΆνλ κ²κ³Ό λ§μ°¬κ°μ§μ΄λ€
π ν¨μ μ΄λ¦μ μν
var new_function = function add(x, y){
return x + y;
}
console.log(add(2, 4)); // ReferenceError : add is not defined
"ν¨μ μ΄λ¦μ ν¨μ λͺΈμ²΄ λ΄λΆμμλ§ μ°Έμ‘°ν μ μλ μλ³μμ΄λ€."
λ°λΌμ ν¨μ μΈλΆμμλ νΈμΆν μ μλ€.
리ν°λ΄ ννμμΌλ‘ μ¬μ©λ add ν¨μλ₯Ό κ°λ₯΄ν€λ μλ³μκ° μλ€λ λ»μ΄λ€.
function add(x, y){
return x + y;
}
console.log(add(2, 4)); // 6
νμ§λ§ ν¨μ μ μΈλ¬ΈμΌλ‘ μ μλ ν¨μ add λ μΈλΆμμ νΈμΆν μ μλ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ΄ λ°νμ μμ μ΄μ μ νκ°λ₯Ό ν λ ν¨μ μ μΈλ¬Έμ ν΄μνκ³ ν¨μ κ°μ²΄λ₯Ό μμ±νκ³ , κ·Έ κ°μ²΄μ μμ μ£Όμλ₯Ό κ°λ₯΄ν€λ μλ³μ add λ₯Ό μ묡μ μΌλ‘ μμ±νκΈ° λλ¬Έμ΄λ€.
ν¨μ μ΄λ¦μΌλ‘ ν¨μλ₯Ό νΈμΆνλ κ²μ΄ μλλΌ, ν¨μ κ°μ²΄λ₯Ό κ°λ₯΄ν€λ μλ³μλ₯Ό ν΅ν΄μ ν¨μλ₯Ό νΈμΆνλ κ²μ΄λ€ !
2οΈβ£ ν¨μ ννμ
μλ°μ€ν¬λ¦½νΈ ν¨μλ κ°μ²΄μ΄μ§λ§ κ°μ μ±μ§μ κ°κΈ°λλ¬Έμ μ¬κΈ°μ κΈ°μ μμ λ‘κ² μ¬μ©ν μ μλ€.
λ°λΌμ μΌκΈ κ°μ²΄λΌκ³ λΆλ¦°λ€.
ν¨μ 리ν°λ΄λ‘ μμ±ν ν¨μ κ°μ²΄λ₯Ό λ³μμ ν λΉνλ λ°©μμ ν¨μ ννμ μ΄λΌκ³ νλ€.
ν¨μ ννμμ μ΅λͺ ν¨μ(μ΄λ¦μ΄ μλ ν¨μ)λ₯Ό μ¬μ©νλ€.
var add = function(x, y){
return x + y;
}
console.log(add(2, 4));
// ν¨μλ₯Ό νΈμΆ ν λλ, ν¨μ μ΄λ¦μ΄ μλ ν¨μ κ°μ²΄λ₯Ό κ°λ₯΄ν€λ μλ³μλ₯Ό μ¬μ©νλ€
var sub = function minus(x, y){
return x - y;
}
console.log(minus(6, 2)); // ReferenceError
console.log(sub(6, 2)); // 4
π ν¨μ νΈμ΄μ€ν
console.log(add(2, 4)); // 6
console.log(sub(6, 4)); // TypeError : sub is not function
function add(x, y){
return x + y;
}
var sub = function(x ,y){
return x - y;
}
ν¨μ μ μΈλ¬Έ
ν¨μ μ μΈλ¬ΈμΌλ‘ ν¨μλ₯Ό μ μνλ©΄, μ½λκ° νμ€μ© μ€νλλ λ°νμ μμ μ΄μ μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄μ ν¨μ κ°μ²΄κ° μμ±λκ³ κ·Έ κ°μ²΄λ₯Ό κ°λ₯΄ν€λ μλ³μλ μ묡μ μΌλ‘ μμ±λλ€.
λ°νμ μμ μλ μ΄λ―Έ ν¨μ μ μΈλ¬ΈμΌλ‘ μ μν ν¨μκ° μμ±λμ΄ μκ³ , κ·Έ ν¨μ κ°μ²΄λ₯Ό κ°λ₯΄ν€λ μλ³μλ μμ± λμλ κ²μ΄λ€.
μ΄λ₯Ό ν¨μ νΈμ΄μ€ν μ΄λΌκ³ νλ€.
ν¨μ ννμ
ν¨μ ννμμ λ³μμ ν λΉνλ κ°μ΄ ν¨μ 리ν°λ΄μ΄λ€
λ³μλ₯Ό μ μΈνκ³ λ³μμ μμ κ°μ ν λΉνλ κ²κ³Ό λμΌνκ² λμνλ€.
// ν¨μ ννμμ μ΄μ λμΌνκ² λμ
var x; // λ³μ μ μΈλ¬Έ
x = 10; // λ³μ κ° ν λΉλ¬Έ
var x = 10; // μΆμ½
var sub; // λ³μ μ μΈλ¬Έ
sub = function(x, y){ // ν¨μ 리ν°λ΄ ννμ
return x - y;
}
λ³μ κ° ν λΉλ¬Έμ λ°νμ μ΄μ μ΄ μλ, λ°νμ μμ μ κ°μΌλ‘ νκ° λλ―λ‘ ν¨μ 리ν°λ΄λ λ§μ°¬κ°μ§λ‘ λ°νμ μμ μ νκ°λμ΄ ν¨μ κ°μ²΄κ° λλ€.
ν¨μ ννμ μ΄μ μ ν¨μλ₯Ό μ°Έμ‘°νλ €κ³ νλ©΄ undefined λ₯Ό νΈμΆνλ κ²κ³Ό λ§μ°¬κ°μ§ μ΄λ―λ‘, TypeError μ΄ λ°μνλ€.
π λ³μ νΈμ΄μ€ν vs ν¨μ νΈμ΄μ€ν
νΈμ΄μ€ν | λ³μ | ν¨μ |
곡ν΅μ | λ°νμ μ΄μ μ μλ³μλ₯Ό μμ±νλ€ | |
μ°¨μ΄μ | undefined λ‘ νκ° | ν¨μ κ°μ²΄λ‘ νκ°, μ μΈλ¬Έ μ΄μ μ νΈμΆ κ°λ₯ |
3οΈβ£ Function μμ±μ ν¨μ
var add = new Function('x', 'y', 'return x + y');
console.log(add(2, 4));
μ΄ λ°©μμ μΌλ°μ μ΄μ§ μκ³ , μ μΈλ¬Έμ΄λ ννμμΌλ‘ μ μν ν¨μλ€κ³Ό λ€λ₯΄κ² λμνκ³ ν΄λ‘μ λ₯Ό μμ±νμ§ μλλ€.
4οΈβ£ νμ΄ν ν¨μ
const add = (x, y) => x + y;
console.log(add(2, 4)); // 6
Es6 λΆν°λ ν¨μ μ μνλλ° νμν ννμ κ°λ΅ν νκΈ° μν΄μ νμ΄ν ν¨μλ₯Ό μ¬μ©νλ€.
νν λΏλ§ μλλΌ, ν¨μμ λ΄λΆλμ λν κ°λ΅ν λμ΄μλ€.
'javascript > DeepDive' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Js λ₯λ€μ΄λΈ] 13. μ€μ½ν (0) | 2022.11.07 |
---|---|
[Js λ₯λ€μ΄λΈ] 12. ν¨μ (2) (0) | 2022.11.06 |
[DEEP DIVE] 11. μμ vs κ°μ²΄ (0) | 2022.11.02 |
[DEEP DIVE] 10. κ°μ²΄ 리ν°λ΄ (0) | 2022.10.28 |
[DEEP DIVE] 9. νμ λ³νκ³Ό λ¨μΆ νκ° (3) | 2022.10.03 |