Javascript 정리(3)

kirin.logΒ·2021λ…„ 2μ›” 3일
0

βœ… Function(ν•¨μˆ˜) - 데이터 λ°›κΈ°

πŸ‘‰ 데이터λ₯Ό 전달 λ°›λŠ” ν•¨μˆ˜μ˜ μ •μ˜
(λ§€κ°œλ³€μˆ˜λ₯Ό μ§€μ •ν•˜μ—¬ μ›ν•˜λŠ” μΈμžκ°’μ„ 계속 넣을 수 있게 ν•œλ‹€)

function alertSuccess(name) {
  alert(name + " λ‹˜ 둜그인 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.");
}
// nameμ΄λΌλŠ” λ§€κ°œλ³€μˆ˜λ₯Ό μ§€μ •ν•˜μ˜€λ‹€.
alertSuccess("μ΄μ›Œν¬");   // 'μ΄μ›Œν¬ λ‹˜ 둜그인 λ˜μ…¨μŠ΅λ‹ˆλ‹€.'
alertSuccess("κΉ€μ›Œν¬");   // 'κΉ€μ›Œν¬ λ‹˜ 둜그인 λ˜μ…¨μŠ΅λ‹ˆλ‹€.'
alertSuccess("μ†‘μ›Œν¬");   // 'μ†‘μ›Œν¬ λ‹˜ 둜그인 λ˜μ…¨μŠ΅λ‹ˆλ‹€.'
// μ›ν•˜λŠ” 인자λ₯Ό λ§€κ°œλ³€μˆ˜μ— λ„£μ–΄ 각각 λ‹€λ₯Έ 값을 ν˜ΈμΆœν•  수 μžˆλ‹€.

❗ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 인자둜 받은 λ³€μˆ˜μ— μƒˆλ‘œμš΄ 값을 λ„£μœΌλ©΄ μ•ˆ λœλ‹€.

function alertSuccess(name) {   
  let name = "leedev";   // ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ λ§€κ°œλ³€μˆ˜μ— 값을 λ„£μœΌλ©΄ μ•ˆλœλ‹€.
  return(name + "λ‹˜ 둜그인 성곡!"); 
}
// μœ„μ™€ 같이 ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 인자둜 받은 λ³€μˆ˜(name)에 μƒˆλ‘œμš΄ κ°’("leedev")을 λ„£μœΌλ©΄ μ•ˆ λœλ‹€!
// 인자(parameter)에 μ‹€μ œλ‘œ μ–΄λ–€ 데이터가 μ „λ‹¬λ μ§€λŠ”, ν˜ΈμΆœν•  λ•Œ κ²°μ •ν•˜λŠ” 것이닀. (μ•„λž˜μ²˜λŸΌ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν• λ•Œ)

alertSuccess("leedev"); 
function isbiggerThanHundred(myNumber) {
    if (myNumber >100){
      return("크닀!");
    }
    if (myNumber <=100){
      return("μž‘λ‹€!");
    }
}
console.log(isbiggerThanHundred(100));  // 'μž‘λ‹€!' 호좜
// λ§€κ°œλ³€μˆ˜(parameter) = myNumber
// 인자(argument) = 100

βœ… Function(ν•¨μˆ˜) - parameter, argument

πŸ‘‰ 맀개 λ³€μˆ˜
ν•¨μˆ˜λ₯Ό μ •μ˜ ν•˜λ©΄μ„œ, ν•¨μˆ˜ μ„ μ–Έμ‹μ˜ κ΄„ν˜Έ()μ•ˆμ— μ–΄λ–€ λ³€μˆ˜λͺ… 을 μ“°λ©΄, κ·Έκ±Έ λ§€κ°œλ³€μˆ˜ 라고 λΆ€λ₯Έλ‹€. 맀개 λ³€μˆ˜λŠ” μ‹€μ œλ‘œ ν•¨μˆ˜ μ•ˆμͺ½μ—μ„œ λ³€μˆ˜μ™€ 같은 역할을 ν•˜κ²Œ λœλ‹€. ν•¨μˆ˜κ°€ 호좜될 λ•Œ κ°’(인자)을 μ „λ‹¬λ°›κ²Œ 되면 맀개 λ³€μˆ˜μ— 값이 μ •μ˜λœλ‹€.
πŸ‘‰ 인자
μ–΄λ–€ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ, 호좜문의 κ΄„ν˜Έ()μ•ˆμ— μ–΄λ–€ κ°’ λ˜λŠ” 값이 μ •μ˜λœ λ³€μˆ˜λ₯Ό μ“°λ©΄, κ·Έκ±Έ 인자 라고 λΆ€λ₯Έλ‹€.
❗ ν•¨μˆ˜μ—μ„œ λ§€κ°œλ³€μˆ˜λ₯Ό 적어둔 μƒνƒœλΌλ©΄, ν˜ΈμΆœμ‹œ 인자둜 μ „λ‹¬ν•œ 값은 λ§€κ°œλ³€μˆ˜λ₯Ό 톡해 μ‚¬μš© κ°€λŠ₯

// doubleNumber ν•¨μˆ˜ 선언식
function doubleNumber(myNumber) {   // ν˜ΈμΆœμ‹œ 전달받은 값을 myNumber λΌλŠ” λ³€μˆ˜λͺ…μœΌλ‘œ ν•¨μˆ˜ μ•ˆμͺ½μ—μ„œ μ‚¬μš©ν•˜κ² λ‹€.
  let myResult = myNumber * 2
  return myResult
}

// doubleNumber ν•¨μˆ˜ 호좜문
doubleNumber(3); // doubleNumberλ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ κ°’(인자) 3을 전달해주겠닀.
// λ³€μˆ˜λ₯Ό ν†΅ν•œ doubleNumber ν•¨μˆ˜ 호좜문
let someNumber = 42
doubleNumber(someNumber); // doubleNumberλ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ κ°’ 42λ₯Ό 전달
/* 
ν•¨μˆ˜ `halfNumber` λ₯Ό μ„ μ–Έν•˜κ³  κ΅¬ν˜„ν•˜μ„Έμš”. 숫자둜 된 인자 ν•˜λ‚˜λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.
받은 값을 2둜 λ‚˜λˆˆ κ²°κ³Όλ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€. λ§€κ°œλ³€μˆ˜ 이름은 λ§ˆμŒλŒ€λ‘œ μ •ν•΄μ„œ μ‚¬μš©ν•©λ‹ˆλ‹€.
*/

function halfNumber(number) {
    return number/2;
}


/* 
ν•¨μˆ˜ `halfAndAddNumber`λ₯Ό μ„ μ–Έν•˜κ³  κ΅¬ν˜„ν•˜μ„Έμš”.숫자둜 된 인자 ν•˜λ‚˜λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.
1번 λ¬Έμ œμ—μ„œ λ§Œλ“€μ—ˆλ˜ `halfNumber`λ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ, 인자둜 λ°›μ•˜λ˜ 값을 λ‹€μ‹œ `halfNumber` ν•¨μˆ˜μ— μ „λ‹¬ν•΄μ€λ‹ˆλ‹€.
`halfNumber`의 리턴결과λ₯Ό ν•¨μˆ˜ μ•ˆμͺ½μ—μ„œ λ³€μˆ˜λͺ… `result`에 μ •μ˜ν•©λ‹ˆλ‹€.
'result'에 1을 λ”ν•œ 값을 λ¦¬ν„΄ν•©λ‹ˆλ‹€.
*/

function halfAndAddNumber(number) {
    let result = halfNumber(number)+1;
    return result;
}

// ν•¨μˆ˜ 호좜
halfAndAddNumber(10);   // 6

βœ… Function(ν•¨μˆ˜) - μ—¬λŸ¬ 인자

πŸ‘‰ 볡수의 λ§€κ°œλ³€μˆ˜μ— 볡수의 인자λ₯Ό 전달할 수 μžˆλ‹€.

// 2개의 λ§€κ°œλ³€μˆ˜
function eventResult(month, name) {
  console.log(month + "μ›”μ˜ λ‹Ήμ²¨μžλŠ” " + name + "μž…λ‹ˆλ‹€.");
}

// ν•¨μˆ˜ 호좜(2개 인자 전달)
eventResult(3, "leedev");

// 3μ›”μ˜ λ‹Ήμ²¨μžλŠ” leedevμž…λ‹ˆλ‹€.
/* 
`meetAt` ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ£Όμ„Έμš”. 인자λ₯Ό μ„Έκ°œ λ°›μŠ΅λ‹ˆλ‹€.
1. 첫번째 μΈμžλŠ” 년도에 ν•΄λ‹Ήν•˜λŠ” μˆ«μžμž…λ‹ˆλ‹€.
2. λ‘λ²ˆμ§Έ μΈμžλŠ” 월에 ν•΄λ‹Ήν•˜λŠ” μˆ«μžμž…λ‹ˆλ‹€.
3. μ„Έλ²ˆμ§Έ μΈμžλŠ” 일에 ν•΄λ‹Ήν•˜λŠ” μˆ«μžμž…λ‹ˆλ‹€.
년도 인자만 λ°›μ•˜μ„ 경우 β†’ `"1234λ…„"` κ³Ό 같은 ν˜•μ‹μ˜ λ¬Έμžμ—΄μ„ 리턴 ν•΄μ£Όμ„Έμš”.
년도,μ›” 인자λ₯Ό λ°›μ•˜μ„ 경우 β†’ 년도와 월을 μ‘°ν•©ν•΄μ„œ `"1234λ…„ 5μ›”"` κ³Ό 같은 ν˜•μ‹μ˜ λ¬Έμžμ—΄μ„ 리턴 ν•΄μ£Όμ„Έμš”.
년도,μ›”,일 인자λ₯Ό μ „λΆ€ λ°›μ•˜μ„ 경우 β†’ 년도,μ›”,일을 μ‘°ν•©ν•΄μ„œ `"1234/5/6"` κ³Ό 같은 ν˜•μ‹μ˜ λ¬Έμžμ—΄μ„ 리턴 ν•΄μ£Όμ„Έμš”.
*/

function meetAt(year, month, date) {
    if(year, month, date) {
      return year + "/" + month + "/" + date + "/";
    }
    if(year, month) {
      return year + "λ…„" + month + "μ›”";
    }
    if(date) {
      return year + "λ…„";
    }
}
meetAt(2021, 1 , 1);   // 2021/1/1
meetAt(2021, 1);   // 2021λ…„1μ›”
meetAt(2021);   // 2021λ…„
// λ§€κ°œλ³€μˆ˜μ˜ μžλ¦¬λŠ” 3κ°œμ΄λ‹€. 인자λ₯Ό 1개 λ„£μ–΄μ£Όλ©΄ 첫번째 ifλ¬Έμ—λŠ” 해당이 μ•ˆλ˜μ„œ pass
// λ‘λ²ˆμ§Έ if문에도 해당이 μ•ˆλ˜μ„œ pass
// μ„Έλ²ˆμ§Έ if문에 인자1개 값이 λ“€μ–΄κ°€μ„œ returnν•˜κ³  μ’…λ£Œ.


// λ§Œμ•½ if문의 μˆœμ„œλ₯Ό λ°”κΏ”μ€€λ‹€λ©΄?
function meetAt(year, month, date) {
    if(year) {
      return year + "λ…„";
    }
    if(year, month) {
      return year + "λ…„" + month + "μ›”";
    }
    if(year, month, date) {
      return year + "/" + month + "/" + date + "/";
    }
}
meetAt(2021, 1 , 1);  // 2021λ…„
// μ΅œμ†Œ 인자 1개λ₯Ό 첫번째 ifλ¬Έμ—μ„œ μΆ©μ‘±ν•˜κΈ° λ•Œλ¬Έμ— λ°”λ‘œ return되고 μ’…λ£Œλœλ‹€.
// λ”°λΌμ„œ 인자 3κ°œκ°€ λ“€μ–΄κ°ˆ 수 μžˆλŠ” 쑰건뢀터 써쀀닀.
// (=μΈμžκ°€ 1개면 μΆ©μ‘±λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ‹€μŒ if문으둜 λ„˜μ–΄κ°ˆ 수 μžˆλ‹€)

βœ… Function(ν•¨μˆ˜) - 데이터 λ°˜ν™˜(return)

πŸ‘‰ return은 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν–ˆμ„ λ•Œ, ν•¨μˆ˜κ°€ 값을 λ°˜ν™˜ν•œλ‹€λŠ” 뜻
πŸ‘‰ return을 μƒλž΅ν•˜λ©΄ ν•¨μˆ˜λŠ” undefinedλ₯Ό λ°˜ν™˜

function eventDate(month, name) {   
  console.log(month, name);   // eventDate ν•¨μˆ˜ μ•ˆμ— return이 μ—†λ‹€. 
}  

let result = eventDate("3", "이개발"); // ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ κ²°κ³Όλ₯Ό result에 λ‹΄μ•„μ„œ
console.log("eventDate 호좜 값은" + result); // 'eventDate 호좜 값은 undefined' 라고 ν˜ΈμΆœλœλ‹€.

πŸ‘‰ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ λ‹€λ₯Έ ν•¨μˆ˜ ν˜ΈμΆœν•˜κΈ°

function getTax(price) {
  return price * 0.1;
}

function calculateTotal(price) {
  return price + getTax(price);  // getTax(price) ν•¨μˆ˜ 호좜
}

let result = calculateTotal(3500);  // ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜λŠ” μ‹œμ , ν•¨μˆ˜ ν˜ΈμΆœν•¨
console.log(result);
/* 
`getTotal` ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ£Όμ„Έμš”! `getTotal` ν•¨μˆ˜λŠ” 가격을 2개 λ°›μ•„μ„œ calculateTotal 호좜 λ°˜ν™˜κ°’μ„ λ”ν•΄μ„œ λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
1. `getTotal` μ΄λΌλŠ” μ΄λ¦„μ˜ ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ£Όμ„Έμš”. 가격정보 2개λ₯Ό 인자둜 λ°›μŠ΅λ‹ˆλ‹€.
2. μΈμžμ΄λ¦„μ€ μ›ν•˜λŠ”λŒ€λ‘œ 지어주셔도 λ©λ‹ˆλ‹€.
3. `getTotal` ν•¨μˆ˜μ—μ„œ 인자둜 받은 κ°€κ²©μœΌλ‘œ 각각 `calculateTotal` ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄μ£Όμ„Έμš”. 그리고 κ·Έ 결과값을 λ”ν•΄μ„œ λ°˜ν™˜ν•΄μ£Όμ„Έμš”.
μ°Έκ³ )
`getTax` ν•¨μˆ˜λŠ” κ°€κ²©μ˜ taxλ₯Ό κ΅¬ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
`calculateTotal` ν•¨μˆ˜λŠ” μƒν’ˆμ˜ 가격에 taxλ₯Ό λ”ν•œ 값을 κ΅¬ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
`getTotal` ν•¨μˆ˜λŠ” 두 μƒν’ˆμ˜ 가격을 λ”ν•΄μ„œ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
*/

function getTax(price) {
   return price * 0.1;
}
function calculateTotal(price) {
   return price + getTax(price);
}
function getTotal(price1, price2) {
    return calculateTotal(price1) + calculateTotal(price2);
}

getTotal(500, 900);  // 1540
// getTax(price) ν•¨μˆ˜μ‹μ„ λ§Œλ“  λ’€, calculateTotal(price)ν•¨μˆ˜μ— ν˜ΈμΆœν•œλ‹€.
// getTotal(price1, price2) ν•¨μˆ˜μ—λŠ” λ§€κ°œλ³€μˆ˜λ₯Ό 2개λ₯Ό λ„£λŠ”λ‹€. 각 λ§€κ°œλ³€μˆ˜λŠ” calculateTotal(price)ν•¨μˆ˜μ— μΈμžκ°€ μ „λ‹¬λ˜μ–΄μ„œ 호좜될 수 μžˆλ‹€.
profile
boma91@gmail.com

0개의 λŒ“κΈ€