TIL_20210323

ChungsikPark·2021년 3월 23일
0

TIL

목록 보기
13/31

함수

  • 함수 내부에서 선언한 변수인 지역 변수(local variable)는 함수 안에서만 접근 가능
  • 함수 내부에선 함수 외부의 변수인 외부 변수(outer variable)에 접근 및 수정 가능
  • 함수 내부에 외부 변수와 동일한 이름을 가진 변수가 선언되었다면, 내부 변수는 외부 변수를 가림
  • 함수 외부에 선언 되는 변수는 전역 변수(global variable)라고 불리며, 같은 이름을 가진 지역 변수에 의해 가려지지만 않는다면 모든 함수에서 접근 가능
  • 변수는 연관되는 함수 내에서 선언하고, 전역 변수는 되도록 사용하지 않는 것이 좋음
  • 함수는 간결하고, 한 가지 기능만 수행할 수 있게 쪼개서 생성하여 가독성 상승
// 소수를 출력하는 함수: 쪼개기 이전에는 소수 검증과 소수 출력을 함께 진행
let showPrimes = (n) => {
  nextPrime: for (let i = 2; i < n; i++) {
    for (let j = 2; j < i; j++) {
      if (i % j === 0) continue nextPrime;
    }
    alert(i);
  }
}
// 소수를 출력하는 함수: 소수를 검증하는 함수를 따로 분리
let showPrimes = (n) => {
  for (let i = 2; i < n; i++) {
    if (!isPrime(i)) continue;
    alert(i);
  }
}

let isPrime = (n) => {
  for (let i = 2; i < n; i++) {
    if (n % i === 0) return false;
  }
  return true;
}

함수 기본값

  • 매개변수(parameter)에 값을 전달하지 않으면 undefined가 할당되는데, 이를 막기 위해서 기본값(default value)을 설정 가능
  • 매개변수 오른쪽에 =을 붙이고 undefined 대신 설정하고자 하는 기본값 작성
// ex1
let showMessage = (who, what = "no text given") => {
  alert(who + ": " + what);
}
showMessage("Chungsik"); // Chungsik: no text given

// ex2 (다른 기본값 설정법)
let showMessage = (who, what) => {
  what = what || "no text given"
  alert(who + ": " + what);
}
showMessage("Chungsik"); // Chungsik: no text given

// ex3 (다른 기본값 설정법)
let showMessage = (who, what) => {
  what = what ?? "no text given"
  alert(who + ": " + what);
}
showMessage("Chungsik"); // Chungsik: no text given
  • 기본값으로 함수와 같은 복잡한 표현식도 설정 가능

함수 반환값

  • return 문이 없거나 return 지시자만 있는 함수는 undefined를 반환
let doNothing = () => { /* empty */ }
alert(doNothing() === undefined); // true

let doNothing = () => {
  return;
}
alert(doNothing() === undefined); // true
  • return 문 끝에는 자동으로 세미콜론이 붙기 때문에, return문과 값 사이에 줄 삽입 금지
  • 반환하려는 표현식이 길어 여러 줄에 걸쳐 사용하고 싶을 때는 여는 괄호 ()를 사용
return (
  hello + world
  + welcome + to + korea +
  f(a) + f(b)
  )

함수 만들기 예시

  • xn제곱을 반환해주는 함수, pow(x,n)
  • n1이상의 자연수, 이외에는 자연수를 입력하라는 경보(alert)창 생성
let pow = (x, n) => {
  let result = x;
  for (let i = 1; i < n; i++) {
    result *= x;
  }
  return result;
}

let x = prompt("x?", "");
let n = prompt("n?", "");

if (n < 1) {
  alert(`${n}은 양의 정수이어야 합니다.`);
} else {
  alert(pow(x, n));
}
profile
Blog by Chungsik Park

0개의 댓글