본문 바로가기

Programming Language/Javascript (Node.js)

[자바스크립트 프로그래밍 입문](2판) 연습문제 - Chapter05. 함수

반응형

개인적으로 공부한 내용을 담은 포스팅이라 오타나 오류가 있을 수 있다는 점 참고 부탁드립니다~!

Chapter05. 함수

 

 

01. 다음 괄호 안을 채우시오.

  • 이름이 없는 함수를 익명 함수라고 부른다.
    ➡️ 해설: 이름이 없는 함수는 보통 변수에 할당하거나 콜백으로 사용된다.
  • 문자 그대로의 자료를 나타내는 것을 리터럴이라고 부른다.
    ➡️ 해설: 숫자, 문자열, 불 등 값을 코드에 직접 적은 것.
  • 함수의 매개 변수로 전달하는 함수를 콜백 함수라고 부른다.
    ➡️ 해설: 콜백 함수는 다른 함수에 인수로 전달되어 나중에 실행되는 함수.
  • 함수 외부에서 함수 내부에 자료를 전달할 때는 매개 변수를 사용한다.
    ➡️ 해설: 인자(argument)는 호출 시 넣는 값이고, 매개 변수(parameter)는 받는 쪽 변수.
  • 함수를 실행했을 때, 함수의 결과로 만들어지는 값을 리턴값이라고 부른다.
    ➡️ 해설: return 문을 통해 반환되는 값.
  • 함수 내부에서 어떤 값을 밖으로 전달하고 싶을 때는 return 키워드를 사용한다.
    ➡️ 해설: 함수의 실행 결과를 반환하는 키워드.
  • function() {} 형태의 함수와 () => {} 형태의 함수는 내부에서 this 키워드의 의미가 다르다.
    ➡️ 해설: 일반 함수는 호출한 객체에 따라 this가 바뀌고, 화살표 함수는 선언된 위치의 this를 따른다.

 

 

02. 다음 질문에 OX를 표시하시오.

  • 화살표 함수를 만들 때는 () => {} 형태를 사용한다. O
    ➡️ 해설: ES6에서 도입된 간결한 함수 표현식.
  • 화살표 함수의 본문이 한 줄이라면, () => {} 형태에서 중괄호를 생략할 수 있다. O
    ➡️ 해설: 한 줄일 경우에는 중괄호 없이 바로 표현 가능.
  • 함수는 리턴 값을 넣어서 매개 변수를 만들어 낸다. X
    ➡️ 해설: 매개변수는 함수에 전달되는 값이고, 리턴값은 함수 실행 후 나오는 값임.
  • 함수에 리턴 값을 만들었다면, 매개 변수도 반드시 만들어야 한다. X
    ➡️ 해설: 매개변수 없이도 return 문만으로 리턴값 생성 가능.
  • let x = 010이라는 코드의 010은 16진수로 취급되어 x에 16이 들어간다. X
    ➡️ 해설: 010은 8진수로 간주되어 실제 값은 8이다 (strict 모드에서는 오류).
  • setTimeout() 함수와 setInterval() 함수의 두 번째 매개 변수에 지정하는 시간은 초 단위로 지정한다. X
    ➡️ 해설: 밀리초(ms) 단위로 지정함 (1000 = 1초).
  • 함수는 변수에 저장할 수 없다. X
    ➡️ 해설: 자바스크립트에서 함수는 1급 객체이므로 변수에 저장 가능.
  • 함수를 함수의 매개 변수로 전달할 수 있다. O
    ➡️ 해설: 콜백 함수 구조.
  • 익명 함수와 화살표 함수는 작성 방법만 다르고, 기능은 완전히 동일하다. X
    ➡️ 해설: 기능상 가장 큰 차이점은 this 바인딩 방식이 다름.

 

 

03. 다음 중 함수의 선언 방법으로 옳지 않은 것은?

  1. function test() {  
      console.log("테스트 함수입니다.");  
    }
  2. let test = function() {  
      console.log("테스트 함수입니다.");  
    };
  3. function test() => {  
      console.log("테스트 함수입니다.");  
    }
  4. let test = () => {  
      console.log("테스트 함수입니다.");  
    };

 

 

정답: 3번

 

해설: function 선언 시에는 \`()\` 뒤에 중괄호 \`{}\`로 함수 본문을 감싸야 하며, \`=>\`는 화살표 함수에서만 사용 가능하다.

 

 

04. 다음 중 문자열 자료형을 숫자 자료형으로 바꾸는 함수가 아닌 것은?

 

  1. Number()
  2. parseInt()
  3. parseFloat()
  4. parseDouble()

 

정답: 4번 parseDouble()

 

해설: JavaScript에는 parseDouble() 함수가 존재하지 않는다.

 

 

05. 다음 중 자바스크립트가 기본으로 제공하는 타이머 관련 함수가 아닌 것은?

 

  1. Timer()
  2. setTimeout()
  3. setInterval()
  4. clearInterval()

 

정답: Timer()

 

해설: Timer()는 존재하지 않는 함수다.

 

 

06. 다음 코드의 실행 결과를 예측하시오.

function test(a, b, c) {
  console.log(a);
  console.log(a + b);
  console.log(a * b * c);
}

test(10, 100);

 

 

 

 

실행 결과:

10  
110  
NaN

 

해설: c가 undefined이므로 곱셈 결과는 NaN이 된다.

 

 

07. 다음 중에서 10, "문자열", function(){}처럼 있는 그대로의 자료를 나타내는 단어를 고르시오.

 

  1. 리터럴
  2. 프리미티브
  3. 디폴트
  4. 스탠다드

 

정답: 리터럴

 

해설: literal은 변수에 직접 대입되는 값 자체를 말한다.

 

 

08. 다음 중 16진수를 만들 때 앞에 붙이는 접두사를 고르시오.

 

  1. 0h
  2. 0x
  3. 0
  4. h

 

정답: 0x

 

해설: 자바스크립트에서 16진수는 \`0x\`를 앞에 붙여 표현한다.

 

 

09. 다음 중 특정 시간마다 계속해서 동작하는 타이머를 만들 때 사용하는 함수를 고르시오.

 

  1. setTimer
  2. setInterval
  3. setLoop
  4. setTimeTimer

 

정답: setInterval

 

해설: setInterval()은 일정 시간마다 반복적으로 콜백을 실행한다.

 

 

10. 다음 중 특정 시간 이후 한 번만 동작하는 타이머를 만들 때 사용하는 함수를 고르시오.

 

  1. setTimer
  2. setTimeout
  3. timeAfter
  4. callAfter

 

정답: setTimeout

 

해설: setTimeout()은 지정한 시간(ms)이 지난 후 콜백을 한 번 실행한다.

 

 

11. 다음 중에서 10을 출력하지 않는 코드를 모두 고르시오.

 

1번

// 1번  
function 함수(매개변수) {  
  if (매개변수) {  
    매개변수 = 10;  
  }  
  console.log(매개변수);  
}  
함수();

2번

// 2번

function 함수(매개변수 = 10) {
	console.log(매개변수);
	}
	
함수();

3번

// 3번
function 함수(매개변수) {

if (typeof 매개변수 == 'undefined') {
		매개변수 = 10;
	}
	console.log(매개변수);
}

함수();

4번

// 4번
function 함수(매개변수) {

	매개변수 = 매개변수 || 10;
	
	console.log(매개변수);
}

함수();

 

 

 

정답: 1번

 

해설: 1번 함수는 인자가 없을 때 매개변수가 undefined이므로 if(매개변수)가 false가 되어 10으로 설정되지 않고 undefined를 출력한다. 나머지 코드는 모두 10을 출력한다.

 

 

12. 다음 함수를 만드시오.

 

함수 이름: power
- 매개변수를 하나 넣으면 제곱해 준다.
- 매개변수를 2개 넣으면 첫 번째 매개변수를 두 번째 매개변수만큼 제곱해 준다.

 

함수 이름: multiply
- 매개변수로 받은 값을 모두 곱해 준다.

 

 

정답 (여러가지 버전 가능 그냥 예시로 작성한 코드)

function multiply() {  
  let result = 1;  
  if (arguments.length === 0) return result;  
  for (let i = 0; i < arguments.length; i++) {  
    result \*= arguments\[i\];  
  }  
  return result;  
}

 

 

해설: arguments는 전달된 인자를 배열처럼 접근할 수 있게 해준다.

 

 

13. 다음은 this 키워드의 의미를 확인하는 실험이다.

let 외부 = this;

// ① console.log()
console.log(`①번 위치: ${외부 == this}`);

// ② 화살표 함수
(() => {
  console.log(`②번 위치: ${외부 == this}`);
})();

// ③ 즉시 실행 함수
(function () {
  console.log(`③번 위치: ${외부 == this}`);
})();

// ④ 일반 함수
function 이름() {
  console.log(`④번 위치: ${외부 == this}`);
}
이름();

 

 

 

실행 결과

  • ①번 위치: true
  • ②번 위치: true
  • ③번 위치: false
  • ④번 위치: false

 

해설: 화살표 함수는 선언된 위치의 this를 사용하고, 일반 함수는 호출 방식에 따라 this가 바뀐다.

반응형