더북(TheBook)

 

10장

 

 

1분 퀴즈

1. ①, ⑤

해설_ 함수를 변수에 할당하는 함수 정의 방법은 함수 표현식입니다. 그리고 변수에 할당하는 함수에 식별자가 없으므로 익명 함수입니다.

본문으로

 

2.

function getArrayMaxNumber(arr){
  let result =  0;
  for(let i = 0; i < arr.length; i++){
    if(result < arr[i]) result = arr[i];
  }
  return result;
}
const max = getArrayMaxNumber([10, 50, 30]);
console.log(max);

해설_ getArrayNumber() 함수는 배열을 매개변수로 전달받는 함수입니다. 먼저 배열의 요소와 비교해서 더 큰 값을 저장하기 위한 변수 result를 생성합니다. 전달받은 배열을 순회하면서 result 변수의 할당 값과 배열 요소의 값을 비교합니다. 배열 요소의 값이 result 변수의 값보다 크면 result 변수의 값을 배열 요소의 값으로 재할당하고 이를 배열 요소가 끝날 때까지 반복합니다. 배열 반복이 끝나면 result 변수를 반환합니다.

본문으로

 

3.

해설_ 전역 스코프와 지역 스코프의 변수가 전부 var 키워드로 선언됐습니다. var 키워드는 오직 함수 스코프로만 전역과 지역을 구분합니다. 따라서 지역 변수가 전역 변수를 참조해 outside가 출력될 것 같아 보입니다. 하지만 함수 내부에서 발생하는 호이스팅에 의해 선언과 할당이 분리되어 선언부를 끌어올리면서 text 변수는 선언만 되고 할당은 아직 안 된 undefined가 출력됩니다.

본문으로

 

4.

해설_ 즉시 실행 함수는 함수가 정의된 후 바로 실행됩니다. 매개변수로 10과 20을 전달하고 즉시 실행 함수 내부에서 init() 함수를 호출한 결과를 반환합니다. init() 함수는 다시 doSum() 함수의 결과를 반환하고, doSum() 함수에서는 변수 a, b의 합을 반환하고 있습니다. 따라서 최종으로 두 매개변수의 합인 30이 반환됩니다.

본문으로

 

 

셀프체크

1.

function getCircleArea(radius){
  return radius * radius * 3.14;
}
const area = getCircleArea(10);
console.log(`원의 넓이: ${area}`);

2.

function getOrderDesc(arr){
  let result = 0;
  for(let i = 0; i < arr.length; i++){
    const currentNumber = arr[i];
    if(result < currentNumber){
      result = currentNumber
    }
  }
  return result;
}
const result = getOrderDesc([10, 20, 100, 30, 40]);
console.log(result);

 

3. 키는 cm 단위로 전달받기 때문에 m 단위로 변환하기 위해 100으로 나눕니다. 이후 문제에 주어진 BMI 공식에 따라 키를 제곱하고 이 값으로 몸무게를 나누어서 BMI를 구합니다. 마지막으로 조건문을 사용해 조건(BMI 점수)에 따른 결과를 반환하게 작성하면 됩니다.

// 체질량 BMI 구하기
function getBMI(height, weight){
  const h = height / 100; // m 단위 변환
  const bmi = weight / (h * h);
  if(bmi > 25) return "비만";
  else if(bmi > 24 && bmi <= 25) return "과체중";
  else if(bmi > 18.5 && bmi <= 23) return "정상";
  else return "저체중";
}
const bmi = getBMI(180, 70);
console.log("bmi: " + bmi);

본문으로

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.