개인적으로 공부한 내용을 담은 포스팅이라 오타나 오류가 있을 수 있다는 점 참고 부탁드립니다~!
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. 다음 중 함수의 선언 방법으로 옳지 않은 것은?
-
function test() { console.log("테스트 함수입니다."); }
-
let test = function() { console.log("테스트 함수입니다."); };
-
function test() => { console.log("테스트 함수입니다."); }
-
let test = () => { console.log("테스트 함수입니다."); };
정답: 3번
해설: function 선언 시에는 \`()\` 뒤에 중괄호 \`{}\`로 함수 본문을 감싸야 하며, \`=>\`는 화살표 함수에서만 사용 가능하다.
04. 다음 중 문자열 자료형을 숫자 자료형으로 바꾸는 함수가 아닌 것은?
Number()
parseInt()
parseFloat()
parseDouble()
정답: 4번 parseDouble()
해설: JavaScript에는 parseDouble() 함수가 존재하지 않는다.
05. 다음 중 자바스크립트가 기본으로 제공하는 타이머 관련 함수가 아닌 것은?
Timer()
setTimeout()
setInterval()
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(){}처럼 있는 그대로의 자료를 나타내는 단어를 고르시오.
- 리터럴
- 프리미티브
- 디폴트
- 스탠다드
정답: 리터럴
해설: literal은 변수에 직접 대입되는 값 자체를 말한다.
08. 다음 중 16진수를 만들 때 앞에 붙이는 접두사를 고르시오.
- 0h
- 0x
- 0
- h
정답: 0x
해설: 자바스크립트에서 16진수는 \`0x\`를 앞에 붙여 표현한다.
09. 다음 중 특정 시간마다 계속해서 동작하는 타이머를 만들 때 사용하는 함수를 고르시오.
- setTimer
- setInterval
- setLoop
- setTimeTimer
정답: setInterval
해설: setInterval()은 일정 시간마다 반복적으로 콜백을 실행한다.
10. 다음 중 특정 시간 이후 한 번만 동작하는 타이머를 만들 때 사용하는 함수를 고르시오.
- setTimer
- setTimeout
- timeAfter
- 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가 바뀐다.
'Programming Language > Javascript (Node.js)' 카테고리의 다른 글
[자바스크립트 프로그래밍 입문](2판) 연습문제 - Chapter07. 표준 내장 객체 (0) | 2025.04.27 |
---|---|
[자바스크립트 프로그래밍 입문](2판) 연습문제 - Chapter06. 객체 (0) | 2025.04.27 |
[자바스크립트 프로그래밍 입문](2판) 연습문제 - Chapter04. 반복문 (0) | 2025.04.27 |
[자바스크립트 프로그래밍 입문](2판) 연습문제 - Chapter03. 조건문 (0) | 2025.04.27 |
[자바스크립트 프로그래밍 입문](2판) 연습문제 - Chapter02. 기본 (0) | 2025.04.27 |