κ°œλ°œμΌμ§€πŸ“_08

ᴢᴬᴱᡞᴼᴼᴺ·2021λ…„ 5μ›” 19일
1
post-thumbnail

πŸ’‘ 이번 μ£Όμ—λŠ” 객체 νƒ€μž…μ— ν•΄λ‹Ήν•˜λŠ” ν•¨μˆ˜, λ°°μ—΄ 등에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜μœΌλ©° λ¬Έμžμ—΄κ³Ό λ°°μ—΄μ˜ ν”„λ‘œνΌν‹° 및 λ©”μ„œλ“œμ— λŒ€ν•΄μ„œλ„ μ‚΄νŽ΄λ³΄μ•˜λ‹€.

μƒˆλ‘œ 배운 λ‚΄μš©πŸŒΌ

βœ” 쑰건문
: 쑰건문은 주어진 쑰건식에 따라 μ½”λ“œ λΈ”λ‘μ˜ 싀행을 결정함
β–ͺ if ... elseλ¬Έ

πŸ‘‰λ™μΌν•œ μž‘μ—…μ„ if λ¬Έ λŒ€μ‹  μ‚Όν•­ 쑰건 μ—°μ‚°μžλ‘œ ν•  경우

: 쑰건에 따라 λ‹¨μˆœνžˆ 값을 κ²°μ •ν•˜μ—¬ λ³€μˆ˜μ— 값을 ν• λ‹Ήν•  경우, μ‚Όν•­ 쑰건 μ—°μ‚°μžλ₯Ό μ“°λŠ” 것이 가독성에 μ’‹μŒ. ν•˜μ§€λ§Œ 쑰건에 따라 μ‹€ν–‰ν•΄μ•Ό ν•  λ‚΄μš©μ΄ λ§Žμ„ 경우, if ... else문을 μ“°λŠ” 편이 가독성에 λ‚˜μŒ.

β–ͺ switchλ¬Έ

let month = 5;
let monthName;

switch (month) {
  case 1:
    monthName = "1μ›”";
    console.log("1");
    break;
  case 2:
    monthName = "2μ›”";
    console.log("2");
    break;
  case 3:
    monthName = "3μ›”";
    console.log("3");
    break;
  case 4:
    monthName = "4μ›”";
    console.log("4");
    break;
  case 5:
    monthName = "5μ›”";
    console.log("5");  // 5
    break;
  case 6:
    monthName = "6μ›”";
    console.log("6");
    break;
  default:
    monthName = "μœ νš¨ν•˜μ§€ μ•Šμ€ κ°’μž…λ‹ˆλ‹€";
}

console.log(monthName); // 5μ›”

βœ” 반볡문
β–ͺ break문은 μ‘°κ±΄μ‹μ˜ 평가 κ²°κ³Όκ°€ trueλ©΄ μ½”λ“œ 블둝을 νƒˆμΆœν•¨

βœ” ν•¨μˆ˜
: μž…λ ₯ input 을 λ°›κ³  κ²°κ³Ό outputλ₯Ό λ‚΄λ†“μŒ

// ν•¨μˆ˜ μ„ μ–Έλ¬Έ
// ν•¨μˆ˜ μ •μ˜
function add(x, y) {
	return x + y;
}

// ν•¨μˆ˜ 호좜
add(5, 20); // 25 

β–ͺ ν•¨μˆ˜ λ‚΄λΆ€λ‘œ μž…λ ₯을 μ „λ‹¬λ°›λŠ” λ³€μˆ˜λ₯Ό λ§€κ°œλ³€μˆ˜ parameter,
μž…λ ₯을 인수 argument, 좜λ ₯을 λ°˜ν™˜κ°’ return value 이라고 함
β–ͺ ν•¨μˆ˜λŠ” 객체 νƒ€μž…μ˜ κ°’, λ”°λΌμ„œ λ‹€μŒκ³Ό 같이 ν•¨μˆ˜ λ¦¬ν„°λŸ΄ 생성할 수 있음 (λ¦¬ν„°λŸ΄ : μ‚¬λžŒμ΄ 이해할 수 μžˆλŠ” 문자 λ˜λŠ” μ•½μ†λœ 기호λ₯Ό μ‚¬μš©ν•˜μ—¬ 값을 μƒμ„±ν•˜λŠ” ν‘œκΈ° 방식)

// ν•¨μˆ˜ ν‘œν˜„μ‹
// fλΌλŠ” λ³€μˆ˜μ— ν•¨μˆ˜ λ¦¬ν„°λŸ΄μ„ ν• λ‹Ή
let f = function add(x, y) {
  return x + y;
};

f(5, 20); //25 

πŸ‘‰ν•¨μˆ˜ λ¦¬ν„°λŸ΄κ³Ό ν•¨μˆ˜ 선언문은 ν˜•νƒœκ°€ λ™μΌν•˜μ§€λ§Œ, 차이가 있음. ν•¨μˆ˜ λ¦¬ν„°λŸ΄μ€ ν•¨μˆ˜ 이름을 μƒλž΅ν•  수 있고, ν•¨μˆ˜ 선언문은 ν•¨μˆ˜ 이름을 μƒλž΅ν•  수 μ—†μŒ.

πŸ“Œν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λŠ” 4가지 방식
1. ν•¨μˆ˜ μ„ μ–Έλ¬Έ

// ν•¨μˆ˜ μ„ μ–Έλ¬Έ
function add(x, y) {
	return x + y;
}
  1. ν•¨μˆ˜ ν‘œν˜„μ‹
// ν•¨μˆ˜ ν‘œν˜„μ‹
// λ³€μˆ˜μ— ν•¨μˆ˜ λ¦¬ν„°λŸ΄μ„ ν• λ‹Ή
let f = function add(x, y) {
  return x + y;
};
  1. Function μƒμ„±μž ν•¨μˆ˜
let add = new Function('x', 'y', 'return x + y');
  1. ν™”μ‚΄ν‘œ ν•¨μˆ˜
let add = (x, y) => x + y;

add(5, 20); // 25

πŸ‘‰ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” function ν‚€μ›Œλ“œ λŒ€μ‹  ν™”μ‚΄ν‘œ β‡’ λ₯Ό μ΄μš©ν•΄ μ’€ 더 κ°„λž΅ν•œ λ°©μ‹μœΌλ‘œ ν•¨μˆ˜λ₯Ό 선언함

βœ” λ°°μ—΄ Array
: 배열은 객체 νƒ€μž…μ˜ κ°’
-> κ°μ²΄λŠ” ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œμ˜ 집합체

πŸ”— λ°°μ—΄μ˜ ν”„λ‘œνΌν‹°

: ν”„λ‘œνΌν‹°λŠ” key와 value의 포맷을 가짐. 배열에 λ“€μ–΄μžˆλŠ” μš”μ†ŒλŠ” ν”„λ‘œνΌν‹° value이며, 각각의 μš”μ†Œμ—λŠ” 배열에 λ“€μ–΄μžˆλŠ” μˆœμ„œ(인덱슀 index)λŒ€λ‘œ key값이 주어짐.

β–ͺ λ°°μ—΄μ—λŠ” lengthλΌλŠ” ν”„λ‘œνΌν‹°λ„ μžˆλŠ”λ° length ν”„λ‘œνΌν‹°λŠ” λ°°μ—΄μ˜ 길이, 즉 배열에 λ“€μ–΄μžˆλŠ” μš”μ†Œμ˜ 수λ₯Ό λ‚˜νƒ€λƒ„

πŸ”—λ°°μ—΄μ˜ λ©”μ„œλ“œ

: μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 배열을 λ‹€λ£° λ•Œ μœ μš©ν•œ λ‹€μ–‘ν•œ 빌트인 λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•¨. 맀우 倚!!

βœ” λ¬Έμžμ—΄ String
: λ¬Έμžμ—΄ String은 객체 νƒ€μž…
-> κ°μ²΄λŠ” ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œμ˜ 집합체

πŸ”— λ¬Έμžμ—΄μ˜ ν”„λ‘œνΌν‹°

: λ„μ–΄μ“°κΈ°ν•œ 곡백을 ν¬ν•¨ν•˜μ—¬ 각 λ¬Έμžλ§ˆλ‹€ 인덱슀λ₯Ό ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ κ°–κ³  있음

β–ͺ lengthλΌλŠ” ν”„λ‘œνΌν‹°λ„ μžˆλŠ”λ° length ν”„λ‘œνΌν‹°λŠ” λ¬Έμžμ—΄μ˜ 길이λ₯Ό ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ 가짐

πŸ”—λ¬Έμžμ—΄μ˜ λ©”μ„œλ“œ

: 이외에도 맀우 倚!!

과제

βœλ¬Έμ œν’€μ΄

Q1. μˆ˜μ •μ΄μ˜ ν•˜λ£¨ μΌκ³ΌλŠ” μ–΄λ–»κ²Œ ν˜λŸ¬κ°ˆκΉŒμš”?

πŸ”½μ΄ λ¬Έμ œλŠ” 반볡문 쀑 for문을 μ‚¬μš©ν•˜μ—¬ ν’€μ–΄λ³΄μ•˜λ‹€. forλ¬Έμ—μ„œλŠ” λ°°μ—΄λ‘œ λ‚˜νƒ€λ‚Έ schedule의 인덱슀 0λ²ˆλΆ€ν„° schedule λ°°μ—΄μ˜ 전체 κΈΈμ΄κΉŒμ§€ iλ₯Ό μ¦κ°€μ‹œν‚€λŠ” λ™μž‘μ„ λ°˜λ³΅ν•˜λŠ”λ° κ·Έ μ•ˆμ— ν¬ν•¨λœ if 문이 true 인 경우 μ½”λ“œ 블둝을 μ‹€ν–‰ν•œλ‹€. if λ¬Έμ—μ„œ schedule.place의 i번째 μš”μ†Œκ°€ "이뢈 속"이면 pushλ₯Ό 톡해 schedule.behavior을 μš”μ†Œ result에 μΆ”κ°€ν•¨μœΌλ‘œμ¨ 해당결과인 ["늦잠자기","λ„·ν”Œλ¦­μŠ€λž‘ 쒋은 μ‹œκ°„ 보내기","μΏ¨μΏ¨"] 이 μ½˜μ†”μ°½μ— λ‚˜νƒ€λ‚˜λŠ” 것이닀.

Q2. 우리 λ°˜μ— μˆ˜μ •μ΄λŠ” λͺ‡ λͺ…μΌκΉŒμš”?

// μ•„λž˜ μ‚¬μ§„μ—μ„œ let classMates에 ν•΄λ‹Ήν•˜λŠ” λΆ€λΆ„

let classMates = [
  "지원",
  "μœ μ§„",
  "μ•„λ¦°",
  "재윀",
  "지원",
  "μˆ˜μ •",
  "μ˜ˆμ€",
  "유미",
  "ν•˜μ˜",
  "지원",
  "μˆ˜μ •",
  "μ„œν˜„",
  "아진",
  "λ‹€ν˜œ",
  "μˆ˜μ •",
  "해인",
  "λ‚˜μ—°"
];


πŸ”½classMates λ°°μ—΄μ˜ μ „μ²΄κΈΈμ΄κΉŒμ§€ classMates λ°°μ—΄μ˜ 인덱슀λ₯Ό μ¦κ°€μ‹œν‚€λ©° λ§Œμ•½μ— classMates λ°°μ—΄ μš”μ†Œ 쀑에 "μˆ˜μ •"이 있으면 result κ°’(초기 result 값은 0으둜 μ„€μ •ν•΄λ†“μ•˜μŒ)을 ν•˜λ‚˜μ”© μ¦κ°€μ‹œμΌœ μ½˜μ†”μ°½μ— κ²°κ³Όκ°€ λ‚˜νƒ€λ‚˜λ„λ‘ for λ¬Έκ³Ό κ·Έ μ•ˆμ— if문을 μ‚¬μš©ν•˜μ—¬ 문제λ₯Ό ν’€μ–΄λ³΄μ•˜λ‹€.

Q3. κ°„μž₯ 곡μž₯ 곡μž₯μž₯μ—λŠ” μž₯이 λͺ‡ 번?

πŸ”½split λ©”μ„œλ“œλŠ” λŒ€μƒ λ¬Έμžμ—΄μ—μ„œ 첫번째 인수둜 μ „λ‹¬ν•œ λ¬Έμžμ—΄ λ˜λŠ” μ •κ·œ ν‘œν˜„μ‹μ„ κ²€μƒ‰ν•˜μ—¬ λ¬Έμžμ—΄μ„ κ΅¬λΆ„ν•œ ν›„ λΆ„λ¦¬λœ 각 λ¬Έμžμ—΄λ‘œ 이루어진 배열을 λ°˜ν™˜ν•œλ‹€. 이 λ¬Έμ œμ—μ„œλŠ” "κ°„μž₯ 곡μž₯ 곡μž₯μž₯"μ΄λΌλŠ” 값이 ν• λ‹Ήλœ strμ—μ„œ "μž₯"μ΄λΌλŠ” λ¬Έμžμ—΄μ΄ 총 λͺ‡λ²ˆ λ‚˜μ™”λŠ”μ§€ 물어보고 μžˆμœΌλ―€λ‘œ split λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것이닀. for 문을 μ‚¬μš©ν•˜μ—¬ λ°˜λ³΅μ‹€ν–‰ν•˜λ„λ‘ ν•˜μ˜€κ³  κ·Έ μ•ˆμ— if 문을 μ‚¬μš©ν•˜μ—¬ 쑰건이 λ§žλŠ” 경우 result값이 ν•˜λ‚˜μ”© μ¦κ°€ν•˜μ—¬ μ½˜μ†”μ°½μ— λœ¨λ„λ‘ ν•˜μ˜€λ‹€.

Q4. λ°°μ—΄μ˜ 짝수번째 μš”μ†Œμ—λ§Œ λ”ν•˜κΈ° 2ν•˜κΈ°

πŸ”½λ°°μ—΄μ˜ μΈλ±μŠ€λŠ” 0λΆ€ν„° μ‹œμž‘ν•˜λ―€λ‘œ arr의 짝수번째 μš”μ†ŒλŠ” λ°°μ—΄ 인덱슀의 경우 ν™€μˆ˜λ²ˆμ§Έμ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œλ₯Ό λ§ν•œλ‹€. λ°°μ—΄ 인덱슀 1번째 μš”μ†Œ, 3번째 μš”μ†Œκ°€ arr의 2번째 4번째 μš”μ†Œλ₯Ό μ˜λ―Έν•˜λŠ” 것이닀. λ”°λΌμ„œ ν•΄λ‹Ή λ‚΄μš©μ„ if (i % 2 === 1) 둜 λ°°μ—΄μ˜ 인덱슀 iλ₯Ό 2둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°€ 1인 즉, λ°°μ—΄μ˜ ν™€μˆ˜λ²ˆ μΈλ±μŠ€μ— ν•΄λ‹Ήν•˜λŠ” μš”μ†Œμ— 2λ₯Ό λ”ν•˜λ„λ‘ arr[i] += 2λ₯Ό ν•œ 것이닀.

Q5. μ˜€μ΄λŠ” λΉΌμ£Όμ„Έμš”!

πŸ”½sandwich 에 μžˆλŠ” λ°°μ—΄ μš”μ†Œλ“€ 쀑 "였이"κ°€ μ•„λ‹Œ κ²ƒλ“€λ§Œ result에 ν¬ν•¨λ˜λ„λ‘ ν•˜κΈ° μœ„ν•΄ λ°°μ—΄ 인덱슀 iλ₯Ό 0λ²ˆλΆ€ν„° sandwich λ°°μ—΄μ˜ 총 κΈΈμ΄κΉŒμ§€ μ¦κ°€μ‹œν‚€λ©° λ§Œμ•½μ— sandwich의 i번째 μš”μ†Œκ°€ μ˜€μ΄κ°€ 아닐 경우 result에 ν¬ν•¨λ˜λ„λ‘ if (sandwich[i] !== "였이") result.push(sandwich[i])λ₯Ό ν•˜μ˜€λ‹€.

λŠλ‚€μ 

쑰건문과 λ°˜λ³΅λ¬Έμ— κ΄€λ ¨λœ λ‚΄μš©μ„ λ“€μ„λ•Œ λ‹€λ₯Έ μˆ˜μ—…μ—μ„œ λ“€μ–΄λ³Έ if elseλ¬Έ, switchλ¬Έ, forλ¬Έκ³Ό while문에 λŒ€ν•΄μ„œ λ‹€μ‹œ λ“€μœΌλ©° λ³΅μŠ΅ν•  수 μžˆμ—ˆκ³ , 이외에 λ‹€μ–‘ν•œ μƒˆλ‘œμš΄ λ‚΄μš©λ“€μ„ μ•Œμ•„κ°ˆ 수 μžˆμ–΄μ„œ μ’‹μ•˜λ‹€. μ›Ή νŽ˜μ΄μ§€μ—μ„œ κ°œλ°œμžλ„κ΅¬(F12ν‚€)둜 λ“€μ–΄κ°€λ©΄ μ½˜μ†”μ°½μ„ μ΄μš©ν•˜μ—¬ Codesandboxμ—μ„œμ²˜λŸΌ μ‹€μŠ΅μ„ ν•  수 μžˆλ‹€λŠ” 것도 μƒˆλ‘­κ²Œ μ•Œκ²Œλ˜μ—ˆκ³  직접 μ¨λ³΄λ‹ˆ μ‹ κΈ°ν–ˆλ‹€. κ°μ²΄νƒ€μž…μ˜ ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œκ°€ μ–΄λ–»κ²Œ ν‘œν˜„λ˜μ–΄μžˆλŠ”μ§€ λ°°μ—΄κ³Ό λ¬Έμžμ—΄μ„ μ›Ή νŽ˜μ΄μ§€μ˜ μ½˜μ†”μ°½μ— μž‘μ„±ν•˜μ—¬ 직접 확인할 수 μžˆμ—ˆλ‹€. 정말 λ‹€μ–‘ν•œ λ©”μ„œλ“œκ°€ μžˆλ‹€λŠ” 점에 놀라웠고 처음 λ“€μ–΄λ³΄λŠ” λ‚΄μš©μ΄λΌ ν₯λ―Έλ‘œμ› λ‹€. 주어진 문제λ₯Ό ν’€μ–΄λ³΄λŠ” 과제λ₯Ό ν•˜λ©΄μ„œ 아직은 μžλ°” 슀크립트 문법을 μ΄μš©ν•˜μ—¬ λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ 문제λ₯Ό ν’€μ–΄λ‚˜κ°ˆ μ‹€λ ₯이 μ•ˆλ˜λ©° μ—°μŠ΅μ΄ ν•„μš”ν•˜λ‹€λŠ” 것을 μ•Œ 수 μžˆμ—ˆλ‹€. κ·Έλž˜λ„ ν•΄λ‹΅μ˜ 풀이과정을 λ³΄λ©΄μ„œ 이 뢀뢄은 μ™œ μ΄λ ‡κ²Œ 쓰인 것인지 고민해보며 λ°°μ› λ˜ λ‚΄μš©μ„ λ– μ˜¬λ¦΄ 수 μžˆμ—ˆκ³  forλ¬Έκ³Ό if문의 μ“°μž„μ— λŒ€ν•΄ λ”μš± μ•Œμ•„κ°ˆ 수 μžˆμ—ˆλ‹€. μ•žμœΌλ‘œ μ‹œκ°„μ΄ λ‚ λ•Œλ§ˆλ‹€ ν‹ˆν‹ˆμ΄ μžλ°” 슀크립트 문법에 κ΄€ν•œ μ‹€μŠ΅μ„ ν•˜μ—¬ μ΅μˆ™ν•΄μ§€λ„λ‘ ν•΄μ•Όκ² λ‹€:-)

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보