TIL_16_with Wecode 008 JavaScript about function

JIEUNΒ·2021λ…„ 2μ›” 18일
0
post-thumbnail

πŸ¦Ήβ€β™€οΈ ν•¨μˆ˜λ₯Ό μ •μ˜ν–ˆμ–΄λ„ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ§€ μ•ŠμœΌλ©΄ 싀행이 λ˜μ§€ μ•ŠλŠ”λ‹€!
κΌ­ ν•¨μˆ˜ ν˜ΈμΆœμ„ ν•΄μ£Όμž.
μ•„λž˜μ˜ μ˜ˆμ‹œλ₯Ό 보자.

function alertSuccess() {
  alert("둜그인 성곡!");
}
alertSuccess();

πŸ§Ÿβ€β™€οΈ μœ„μ—μ„œ μ •μ˜ν•œ ν•¨μˆ˜μ˜ alertλ₯Ό 상황에 λ§žλŠ” λ©”μ„Έμ§€λ‘œ λ°”κΎΈκ³  싢을 땐 μ–΄λ–»κ²Œ ν•˜λ©΄ 될까?
μœ„μ˜ ν•¨μˆ˜λŠ” 상황과 상관없이 무쑰건 "둜그인 성곡!" λ©”μ„Έμ§€λ§Œ λ‚˜μ˜¨λ‹€.
이럴 κ²½μš°μ—λŠ” λ§€κ°œλ³€μˆ˜λ₯Ό 지정해주어, ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ 데이터λ₯Ό μ „λ‹¬ν•˜κ³ , 전달받은 데이터λ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.
μ•„λž˜μ˜ μ˜ˆμ‹œλ₯Ό 보자.

function alertSuccess(msg) {
  alert(msg);
}
alertSuccess("μ–‘μ§€μ€λ‹˜ 둜그인 성곡!");
alertSuccess("poohv7λ‹˜ 둜그인 성곡!");

πŸ€Ήβ€β™€οΈ 인자λ₯Ό μ „λ‹¬ν•˜κ³  κ·Έ 인자둜 데이터λ₯Ό μ‚¬μš©ν•˜κΈ°.
μž…λ ₯ν•œ 값을 λ³΄λ‹ˆ "~λ‹˜ 둜그인 성곡!"이 μ€‘λ³΅λ˜κ³  μžˆμŒμ„ 확인할 수 μžˆλ‹€. 효율적이고 κ°„λ‹¨ν•˜κ³  보기쒋은 코딩을 μœ„ν•΄μ„œλŠ” 쀑볡을 쀄여야 ν•œλ‹€. ν•¨μˆ˜λ₯Ό μž¬μ •μ˜ ν•΄λ³΄μžλ©΄,

function alertSuccess(name) {
alert(name + "λ‹˜ 둜그인 성곡!");
}
alertSuccess("양지은");
//κ²°κ³ΌλŠ”? "μ–‘μ§€μ€λ‹˜ 둜그인 성곡!"

πŸ’«μ£Όμ˜ν•˜μžπŸ’«
function μ•ˆμ— "μΈμžλ‘œλΆ€ν„° 받은 λ³€μˆ˜"에 μƒˆλ‘œμš΄ 데이터값을 λ„£μœΌλ©΄ μ•ˆλœλ‹€β—β—βŒβŒπŸ“›

function alertSuccess(name) {   
  let name = "양지은"; 
  //μ΄λ ‡κ²Œ function λ‚΄λΆ€μ—μ„œ 데이터값을 
  μ§€μ •ν•˜μ§€ λ§λΌλŠ” μ–˜κΈ°λ‹€.
  alert(name + "λ‹˜ 둜그인 성곡!"); 
}
alertSuccess("양지은"); 
//μ΄λ ‡κ²Œ function μ™ΈλΆ€μ—μ„œ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œμ—
데이터λ₯Ό μ „λ‹¬ν•΄μ•Όν•œλ‹€!!!

βœ…Assignment
1. 데이터λ₯Ό 전달 λ°›λŠ” isbiggerThanHundred μ΄λΌλŠ” μ΄λ¦„μ˜ ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄μ£Όμ„Έμš”.
2. isbiggerThanHundred ν•¨μˆ˜μ—μ„œ 받은 argumentλ₯Ό myNumberλΌλŠ” parameter에 μ €μž₯ν•΄μ£Όμ„Έμš”.
3. isbiggerThanHundred ν•¨μˆ˜μ—μ„œ

  • myNumberκ°€ 100보닀 크면 "크닀!"λΌλŠ” λ¬Έμžμ—΄μ„ return ν•΄μ£Όμ„Έμš”.
  • myNumberκ°€ 100보닀 μž‘κ±°λ‚˜ κ°™μœΌλ©΄ "μž‘λ‹€!"λΌλŠ” λ¬Έμžμ—΄μ„ return ν•΄μ£Όμ„Έμš”.
function isbiggerThanHundred(myNumber) {
if (myNumber > 100) {
  return("크닀!");
} else {
  return("μž‘λ‹€!")
}
}
isbiggerThanHundred(101);

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

μ •ν™•νžˆ λ­” μ˜λ―ΈμΈμ§€ λˆˆμ— 잘 μ•ˆλ“€μ–΄μ˜€λ„€μš”.
μ˜ˆμ‹œλ₯Ό λ΄…μ‹œλ‹€.

function doubleNumber(myNumber) {
let myResult = myNumber * 2
return myResult
}
doubleNumber(3);

function doubleNumber 에 λ§€κ°œλ³€μˆ˜ myNumber 을 μ •μ˜ν•΄μ€¬μŒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.
function 외뢀에 μžˆλŠ” doubleNumber(3);μ—μ„œ μ†Œκ΄„ν˜Έ μ•ˆμ— μžˆλŠ” 숫자 '3' 이 μΈμžμž…λ‹ˆλ‹€.
λ§€κ°œλ³€μˆ˜λ₯Ό ν†΅ν•΄μ„œ μš°λ¦¬λŠ” ν•¨μˆ˜ 호좜 μ‹œ 인자λ₯Ό μž…λ ₯ν•  수 μžˆλŠ” κ²λ‹ˆλ‹Ή. κ²°κ³ΌλŠ” 6 μ΄κ² λ„€μš”.
λ§€κ°œλ³€μˆ˜λ₯Ό ν†΅ν•΄μ„œ μš°λ¦¬λŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν–ˆμ„ λ•Œ μ—¬λŸ¬λ²ˆμ˜ 인자λ₯Ό μž…λ ₯ν•  수 있게 λœκ²λ‹ˆλ‹€!

let someNumber = 42
doubleNumber(someNumber);

자 μœ„μ˜ κ²½μš°κ°€ μ •μ˜λœ λ³€μˆ˜λ₯Ό 인자둜 μ‚¬μš©ν•œ 예 μž…λ‹ˆλ‹€.
let someNumber = 42 λΌλŠ” λ³€μˆ˜λ₯Ό ν†΅ν•˜μ—¬ someNumber을 42둜 μ •μ˜ν•΄μ£Όμ—ˆκ³  doubleNumber(someNumber); ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ 숫자 '42' 둜 μ •μ˜λœ λ³€μˆ˜λ₯Ό 인자둜 μ‚¬μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

βœ…Assignment 1
ν•¨μˆ˜ halfNumber λ₯Ό μ„ μ–Έν•˜κ³  κ΅¬ν˜„ν•˜μ„Έμš”.
1. 숫자둜 된 인자 ν•˜λ‚˜λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.
2. 받은 값을 2둜 λ‚˜λˆˆ κ²°κ³Όλ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€.
3. λ§€κ°œλ³€μˆ˜ 이름은 λ§ˆμŒλŒ€λ‘œ μ •ν•΄μ„œ μ‚¬μš©ν•©λ‹ˆλ‹€.

function halfNumber(value) {
  return value / 2;
}
halfNumber(6);
  1. 숫자둜 된 인자 ν•˜λ‚˜λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.
    halfNumber(6); 인자 = 6
  2. 받은 값을 2둜 λ‚˜λˆˆ κ²°κ³Όλ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€.
    return value / 2;

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

function halfAndAddNumber(value) {
  let result = halfNumber(value);
  return result + 1;
}
halfNumber();
halfAndAddNumber(10);
  1. 숫자둜 된 인자 ν•˜λ‚˜λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.
    halfAndAddNumber(10); 인자 = 10
  2. 1번 λ¬Έμ œμ—μ„œ λ§Œλ“€μ—ˆλ˜ halfNumberλ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ,
    인자둜 λ°›μ•˜λ˜ 값을 λ‹€μ‹œ halfNumber ν•¨μˆ˜μ— μ „λ‹¬ν•΄μ€λ‹ˆλ‹€.
    halfNumber(); 일단 호좜
    let result = halfNumber(value);
    인자둜 λ°›μ•˜λ˜ 값이라 함은
    halfNumber(value) μ–˜λ₯Ό λ§ν•˜κ² μ₯¬?
    μΈμžλŠ” "6"μ΄μ§€λ§Œ, 인자λ₯Ό λ°›κΈ°μœ„ν•΄ λ§Œλ“€μ–΄μ§„κ²Œ
    λ§€κ°œλ³€μˆ˜κ³  전달받은 값은 halfNumber(value)
    μ–˜λ₯Ό λ§ν•˜κ² μ£ ?
  3. halfNumber의 리턴결과λ₯Ό ν•¨μˆ˜ μ•ˆμͺ½μ—μ„œ
    λ³€μˆ˜λͺ… result에 μ •μ˜ν•©λ‹ˆλ‹€.
    let result = halfNumber(value);
  4. result에 1을 λ”ν•œ 값을 λ¦¬ν„΄ν•©λ‹ˆλ‹€.
    return result + 1;

βœ…Assignment

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

μ²˜μŒμ— λ‚΄κ°€ ν•œ 방식

function meetAt(year, month, date) {
  if(year) {
    return year + "λ…„";
  }
  else if(year, month) {
    return year + "λ…„" + month + "μ›”";
  }
  else if(year, month, date) {
    return year + "/" + month + "/" + date;
  }
}
meetAt(2021); //κ²°κ³ΌλŠ” 2021λ…„
meetAt(2021, 2); //κ²°κ³ΌλŠ” 2021λ…„ γ…‹
meetAt(2021, 2, 18); //κ²°κ³ΌλŠ” 2021λ…„ γ…‹γ…‹

λ‚˜μ™€μžˆλŠ” 예제λ₯Ό κ³ λŒ€λ‘œ λ”°λΌν–ˆλ”λ‹ˆ λ‚˜μ˜¨ κ²°κ³Ό ν•˜ν•˜ν•˜.

κ΅¬κΈ€λ§ν•œ κ²°κ³Ό... λ‚˜μ™€ λ˜‘κ°™μ€ μ‹€μˆ˜λ₯Ό ν•˜μ‹  이전 기수 μ„ λ°°λ‹˜μ˜ 벨둜그λ₯Ό ν†΅ν•˜μ—¬ 닡을 μ°Ύμ•„λ‚Ό 수 μžˆμ—ˆλ‹€.
μ—¬λŸ¬ 인자λ₯Ό 가진 ν•¨μˆ˜

function meetAt(year, month, date) {
  if(date) {
    return year + "/" + month + "/" + date;
  } else if (month) {
    return year + "λ…„ " + month + "μ›”";
  } else if (year) {
    return year + "λ…„";
  }
}
meetAt(2021);
meetAt(2021, 2);
meetAt(2021, 2, 18);

2021λ…„λ§Œ 계속 λ‚˜μ˜¨ μ΄μœ λŠ” μ²˜μŒμ— μž‘μ„±ν–ˆλ˜ μ½”λ“œλ₯Ό 보면,
쑰건듀이 year 와 year, month 그리고 year, month, date 순으둜 μž‘μ„±λ˜μ–΄ μžˆλ‹€. μ—¬κΈ°μ„œ yearκ°€ 참이면 κ±°κΈ°μ„œ ν•¨μˆ˜κ°€ λλ‚˜λ²„λ €μ„œ λ‚˜λ¨Έμ§€ 쑰건문듀을 κ±°μΉ  ν•„μš”κ°€ 없어진 것이닀. κ·Έλž˜μ„œ 3가지 경우 λͺ¨λ‘ 2021λ…„λ§Œ 좜λ ₯λ˜μ—ˆλ˜ 것이닀. λ”°λΌμ„œ, 3가지 λ‹€ κ²°κ³Όλ₯Ό λ„μΆœν•΄λ‚΄κΈ° μœ„ν•΄μ„  μ—­μˆœμœΌλ‘œ 쑰건문을 μž‘μ„±ν•˜λ©΄ λ˜λŠ”κ±°μ˜€λ‹€. return 에선 λ¬Έμžμ—΄μ„ λͺ» λ”ν•˜λŠ”κ±΄κ°€ ν•˜λŠ” 바보같은 고민을 ν•˜λ©° 머릴 싸맀고 μžˆμ—ˆλŠ”λ°... 벨둜그 읽자마자 λ΅ν–ˆλ‹€.πŸ€¦β€β™€οΈ νšŒκ³ λ‘μ„ 많이 μ“°λΌλŠ” 쑰언을 λ“€μ—ˆλ‹€. 틀리고 잘λͺ»μ“΄ 코딩듀도 μ°½ν”Όν•΄ν•˜μ§€μ•Šκ³  κΈ°λ‘ν•˜κ³  고치고 λ°˜μ„±ν•˜λŠ” μ‹œκ°„μ„ 가지도둝 λ…Έλ ₯ν•΄μ•Όκ² λ‹€.

0개의 λŒ“κΈ€