🎈 JavaScript function

전주은·2022λ…„ 11μ›” 13일
1

μžλ°”μŠ€ν¬λ¦½νŠΈ

λͺ©λ‘ 보기
2/5
post-thumbnail

🀍 function

βœ” ν•¨μˆ˜μ˜ μ„ μ–Έ 2가지 방법이 μš©λ„κ°€ λ‹€λ₯΄λ‹€!

  1. ν•¨μˆ˜ 선언식
function ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜1, λ§€κ°œλ³€μˆ˜2 ..){
	ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ—ˆμ„ λ•Œ μ‹€ν–‰ν•  λ¬Έμž₯;
        ...
        return κ°’;
    }
//ν˜ΈμΆœν• λ•Œ
ν•¨μˆ˜λͺ…(κ°’1, κ°’2, κ°’3);

  1. ν•¨μˆ˜ ν‘œν˜„μ‹
let λ³€μˆ˜λͺ… = function(λ§€κ°œλ³€μˆ˜1, λ§€κ°œλ³€μˆ˜2 ..){
    ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ—ˆμ„ λ•Œ μ‹€ν–‰ν•  λ¬Έμž₯;
    ...
    return κ°’;
	}
//ν˜ΈμΆœν• λ•Œ
λ³€μˆ˜λͺ…(κ°’1, κ°’2 ..);

두가지 λ°©λ²•μ˜ 차이점을 μ•Œκ³ μ‹Άλ‹€λ©΄ ν˜Έμ΄μŠ€νŒ…κ²Œμ‹œλ¬Όμ„ ν™•μΈν•˜μ„Έμš”!


βœ” ν™”μ‚΄ν‘œ ν•¨μˆ˜: 더 κ°„κ²°ν•œ 문법!

  • ECMA Script6에 μΆ”κ°€λœ λ¬Έλ²•μž…λ‹ˆλ‹€.
  • function ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ ν•¨μˆ˜λ₯Ό λ§Œλ“œλŠ” 것보닀 κ°„λ‹¨ν•˜κ²Œ ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” 항상 읡λͺ…ν•¨μˆ˜μž…λ‹ˆλ‹€.
  • ν‘œν˜„λ°©λ²•
  const ν•¨μˆ˜μ΄λ¦„ = (λ§€κ°œλ³€μˆ˜1, λ§€κ°œλ³€μˆ˜2..) =>{
      ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ—ˆμ„ λ•Œ μ‹€ν–‰ν•  λ¬Έμž₯;
      ...
      return κ°’;
  }

βœ” ν•¨μˆ˜ μž‘μ„± 팁: 쑰건이 λ§žμ§€ μ•ŠλŠ” 경우 ν•¨μˆ˜ λ„μž…λΆ€λΆ„μ—μ„œ ν•¨μˆ˜λ₯Ό 미리 μ’…λ£Œ!

  • return은 값을 μ „λ‹¬ν•˜λŠ” 것 뿐만 μ•„λ‹ˆλΌ 더이상 λ°‘μœΌλ‘œ λ‚΄λ €κ°€μ§€μ•Šκ³  ν•¨μˆ˜ μ’…λ£Œν•˜λŠ” κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€.
  • return; 이라고 ν•˜κ²Œλ˜λ©΄ undefinedλ₯Ό λ¦¬ν„΄ν•˜μ—¬ 값이 좜λ ₯λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
function print(num){
    if(num<0){
        return;     
    }
    console.log(num);
}
print(10)

βœ” ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜μ˜ 기본값은 무쑰건 undefinedμž„μ„ 주의!

λ§€κ°œλ³€μˆ˜μ— 아무값도 넣지 μ•ŠλŠ”λ‹€λ©΄, undefined둜 적용 λ©λ‹ˆλ‹€.

function total(num1,num2){
    console.log(num1);
    console.log(num2);
    return num1 + num2;
}
total();    //num1: undefined   num2: undefined

λ§Œμ•½ undefined둜 μ •μ˜ λ˜λŠ” 것이 μ‹«λ‹€λ©΄ default값을 μ„€μ • ν•΄λ‘˜ 수 μžˆμŠ΅λ‹ˆλ‹€.

function total2(num1=0,num2=0){
    console.log(num1);
    console.log(num2);
    return num1 + num2;
}
total2();   //num1: 0     num2: 0

βœ” μ½œλ°±ν•¨μˆ˜ (callback function): λ§€κ°œλ³€μˆ˜μ•ˆμ— ν•¨μˆ˜λ₯Ό λ„£λŠ”λ‹€λ©΄?

  • ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 콜백(callback) λ˜λŠ” 콜백 ν•¨μˆ˜λŠ” λ‹€λ₯Έ μ½”λ“œμ˜ μΈμˆ˜λ‘œμ„œ λ„˜κ²¨μ£ΌλŠ” μ‹€ν–‰ κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό λ§ν•©λ‹ˆλ‹€.

  • μ½œλ°±μ„ λ„˜κ²¨λ°›λŠ” μ½”λ“œλŠ” 이 μ½œλ°±μ„ ν•„μš”μ— 따라 μ¦‰μ‹œ μ‹€ν–‰ν•  μˆ˜λ„ 있고, μ•„λ‹ˆλ©΄ λ‚˜μ€‘μ— μ‹€ν–‰ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
    μ½œλ°±ν•¨μˆ˜

  • (ex)

const calc_add = (a,b) => a + b;
const calc_multifly = (a,b) => a * b;

function calculator(num1, num2, action){
    //λ°©μ–΄μ½”λ“œ: μ›ν•˜μ§€ μ•ŠλŠ” κ²°κ³Όκ°€ λ‚˜μ˜€λŠ” 것을 방지
    if(num1 < 0 || num2 < 0){
        return;
    }
    const result = action(num1,num2);
    console.log(result);
    return result;
}
calculator(4, 2, calc_add);     //calculatorμͺ½μœΌλ‘œ calc_add λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό 보낸닀.
calculator(4, 2, calc_multifly);
μ—¬κΈ°μ„œ action이 μ•„λ‹Œ 닀름이름을 써도 μƒκ΄€μ—†μŠ΅λ‹ˆλ‹€!

βœ” μ›μ‹œκ°’κ³Ό 객체값을 μƒκ°ν•˜λ©° μ½”λ“œλ₯Ό 짜자!

  • μ›μ‹œκ°’: 값에 μ˜ν•œ 볡사

  • 객체값: 참쑰에 μ˜ν•œ 볡사(λ©”λͺ¨λ¦¬ μ£Όμ†Œ)

  • ν•¨μˆ˜λ₯Ό λ§Œλ“€λ•Œ 객체값을 바꾸지 μ•Šλ„λ‘ μ£Όμ˜ν•΄μ•Όν•©λ‹ˆλ‹€.

  • (ex)

    function display(num){
      num = 10;
      console.log(num);
    }
    const value = 5;
    display(value);     // 10  값에 μ˜ν•œ 볡사
    console.log(value); // 5
    // μƒμˆ˜valueκ°’μ˜ λ³€ν™”λŠ” μ—†μŠ΅λ‹ˆλ‹€.
    
    function displayObj(obj){
        obj.age = 12;    //❗❗❗ 주의 ❗❗❗
        console.log(obj);
    }
    
    const dog = {name:'λ£¨μ‹œ', age:13};   
    displayObj(dog);    //{ name: 'λ£¨μ‹œ', age: 12 }
    console.log(dog);   //{ name: 'λ£¨μ‹œ', age: 12 }
    // dog의 propertyκ°€ 영ꡬ적으둜 λ³€ν•˜κ²Œ λ©λ‹ˆλ‹€.
    // 였브젝트λ₯Ό λ³΅μ‚¬ν•΄μ„œ 값을 λ°”κΎΈκ³ μ‹Άλ‹€λ©΄ λ‹€μŒκ³Ό 같이 return값을 μ΄μš©ν•˜λ©΄ μ’‹μŠ΅λ‹ˆλ‹€.
    function changeAge(obj){
      return { ...obj, age: 16}; 
    }
    dog2 = changeAge(dog);
    console.log(dog2)   //{ name: 'λ£¨μ‹œ', age: 16 }


0개의 λŒ“κΈ€