오답노트) 자바스크립트 시험
자바스크립트 문제 및 문제풀이
01. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
{
(function(){
console.log("함수가 실행되었습니다.");
})();
}
- (function(){ … })():
- 함수를 익명으로 정의합니다. 이 함수는 즉시 실행됩니다.
- function(){ … } 부분은 익명 함수를 정의하는 것입니다.
- ()로 함수를 즉시 실행시킵니다.
- console.log(“함수가 실행되었습니다.”);:
- 즉시 실행되는 익명 함수 내부에 있는 코드입니다.
- 이 부분은 콘솔에 메시지 “함수가 실행되었습니다.”를 출력합니다.
따라서 이 코드는 페이지가 로드될 때 즉시 실행되는 익명 함수를 정의하고, 이 함수 내에서 콘솔에 메시지를 출력하는 것입니다.
02. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
{
function func(str = "함수가 실행되었습니다."){
document.write(str);
}
func();
}
- function func(str = “함수가 실행되었습니다.”) { … }:
- func라는 이름의 함수를 정의합니다.
- 함수 내부에서는 매개변수 str을 가지며, 기본값으로 “함수가 실행되었습니다.”를 갖습니다.
- 함수가 호출될 때 전달된 매개변수가 없으면 기본값으로 “함수가 실행되었습니다.”를 사용합니다.
- 함수 내부에서는 document.write()를 사용하여 매개변수 str을 문서에 출력합니다.
- func();:
- 정의된 func 함수를 호출합니다.
- 이 함수 호출에서는 매개변수를 전달하지 않았으므로 기본값 “함수가 실행되었습니다.”가 출력됩니다.
이 코드는 함수를 정의하고 호출하여 문서에 특정 문자열을 출력하는 간단한 예제입니다.
03. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
{
let sum = 0;
for(var i=1; i<=10; i++) {
sum += i;
};
document.write(sum);
}
이 코드는 JavaScript를 사용하여 1부터 10까지의 숫자를 더하는 작업을 수행합니다.
여기서 sum 변수는 초기값이 0으로 설정되어 있습니다. 그런 다음 for 반복문을 사용하여 i가 1부터 10까지 증가하도록 설정합니다. 반복문 내에서는 sum 변수에 i 값을 더합니다. 따라서 반복문이 종료되면 sum 변수에는 1부터 10까지의 모든 숫자를 더한 결과가 저장됩니다.
마지막으로 document.write(sum)을 사용하여 결과를 문서에 출력합니다.
이 코드의 실행 결과는 브라우저에 1부터 10까지의 숫자를 모두 더한 값인 55가 표시됩니다.
04. 다음의 결괏값을 보고 빈칸을 작성하시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
const obj = {
a: 100,
b: 200,
c: "javascript"
}
const { a, b, c } = _______;
document.write(a);
document.write(b);
document.write(c);
//100
//200
//javascript
}
이 코드는 JavaScript의 객체 해체(destructuring)를 사용하여 obj 객체의 속성들을 변수에 할당하고, 그 값을 출력하는 예제입니다.
const { a, b, c } = obj; 부분에서 obj 객체의 속성들을 해체하여 a, b, c 변수에 각각 할당합니다. 이후 document.write(a), document.write(b), document.write(c)를 사용하여 각 변수의 값을 문서에 출력합니다.
따라서 출력 결과는 주석과 같이 100, 200, javascript가 됩니다.
05. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
{
for(var i=1; i<=1; i++){
document.write(i);
for(var j=1; j<=5; j++){
document.write(j);
}
}
}
이 코드는 중첩된 for 반복문을 사용하여 숫자를 출력하는 예제입니다.
외부의 첫 번째 for 반복문은 i가 1부터 시작해서 1보다 작거나 같을 때까지 반복합니다. 따라서 외부 반복문은 한 번만 실행됩니다.
내부의 두 번째 for 반복문은 j가 1부터 시작해서 5보다 작거나 같을 때까지 반복합니다. 각 i 값마다 내부 반복문이 실행되며, 1부터 5까지의 숫자가 출력됩니다.
따라서 출력 결과는 11 12 13 14 15가 됩니다.
06. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
{
const num = [100, 200, 300, 400, 500];
for(let i=0; i<num.length; i++){
document.write(_______);
}
//100 200 300 400 500
}
주어진 코드에서 document.write(___); 부분은 배열 num의 각 요소를 출력하는 부분입니다. 따라서 num 배열의 각 요소에 접근하여 출력해야 합니다.
배열의 각 요소에 접근하기 위해서는 배열 인덱스를 사용해야 합니다. 주어진 코드에서 이미 for 반복문이 사용되고 있으므로, 해당 반복문에서 배열 요소에 접근할 수 있습니다.
따라서 document.write(num[i]);를 사용하여 배열 num의 각 요소를 출력할 수 있습니다.
따라서 완성된 코드는 다음과 같습니다.
07. 다음을 보고 리턴값을 생략하여 한줄로 표현하시오!
1
2
3
4
5
{
const func = str => {
return str;
}
}
주어진 코드는 화살표 함수를 사용하여 func라는 이름의 함수를 정의하는 것입니다. 이 함수는 하나의 매개변수 str을 받고, 받은 str을 그대로 반환합니다.
여기서 (str)은 매개변수를 나타내며, =>는 화살표 함수의 정의를 나타냅니다. 이어지는 중괄호 {} 안에는 함수의 본문이 위치하며, 여기서는 단순히 매개변수 str을 반환하는 것으로 정의되어 있습니다.
따라서 func 함수는 어떤 문자열을 받으면 받은 그대로 반환하는 함수입니다.
08. 다음의 결괏값을 보고 빈 칸을 채우시오.
1
2
3
4
5
6
7
8
9
10
{
const num = [100, 200, 300, 400, 500];
for(let index of _____ ){
document.write(index);
}
//결과값
//100 200 300 400 500
}
주어진 코드에서 for(let index of _____) 부분은 배열 num의 각 요소에 접근하기 위한 반복문입니다. 여기서는 배열의 요소를 순회하며 각 요소를 index 변수에 할당하여 사용합니다.
따라서 for(let index of num)과 같이 배열 num을 사용하여 반복문을 정의해야 합니다. 이렇게 하면 반복문이 배열 num의 각 요소를 순회하며 index 변수에 할당하게 됩니다.
완성된 코드는 다음과 같습니다.
09. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
{
function func(){
let i = 5, j = 4, k = 1, l, m;
l = i > 5 || j != 0; // true 또는 false
m = j <= 4 && k < 1; // true 또는 false
document.write(l); // 변수 l의 값 출력
document.write(m); // 변수 m의 값 출력
}
func(); // 함수 호출
}
주어진 코드는 JavaScript로 작성된 함수 func를 정의하고 호출하는 것입니다. 함수 내에서는 변수 i, j, k, l, m을 초기화하고, 논리 연산자를 사용하여 l과 m 변수를 계산합니다. 그리고 각 변수의 값을 document.write()를 통해 출력합니다.
여기서 각 변수의 역할을 살펴보겠습니다:
- i, j, k: 변수 i에는 5를, 변수 j에는 4를, 변수 k에는 1을 할당합니다.
l: i > 5 j != 0 조건을 계산하여 그 결과를 할당합니다. 는 논리 OR 연산자이며, i > 5가 거짓이고 j != 0이 참이면 전체 조건은 참이 됩니다. - m: j <= 4 && k < 1 조건을 계산하여 그 결과를 할당합니다. &&는 논리 AND 연산자이며, j <= 4가 참이고 k < 1이 거짓이면 전체 조건은 거짓이 됩니다.
- 그리고 함수 func()를 호출하여 위에서 계산된 l과 m의 값을 출력합니다.
따라서 함수 func()를 호출하면 l과 m의 값이 각각 출력됩니다. 만약 l의 값이 true이고 m의 값이 false라면, 결과는 truefalse가 됩니다.
10. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
{
const arr = [100, 200, 300, 400, 500];
const text = arr.push(600);
document.write(arr);
}
주어진 코드는 배열 arr에 숫자 600을 추가하고, 배열의 내용을 출력하는 것입니다.
arr.push(600)은 배열 arr의 끝에 숫자 600을 추가하는 메소드입니다. 이 메소드는 배열에 새로운 요소를 추가하고, 해당 배열의 새로운 길이를 반환합니다. 여기서는 숫자 600이 추가된 후의 배열 arr의 길이인 6이 반환됩니다.
그러나 주어진 코드에서 const text = arr.push(600);를 통해 arr.push(600) 메소드의 반환 값을 text 변수에 저장했습니다. 이 부분은 코드의 실행에는 영향을 미치지 않으며, 단순히 반환 값이 저장된 변수를 생성할 뿐입니다. text 변수는 여기서 사용되지 않습니다.
따라서 arr 배열은 숫자 600이 추가된 상태이고, document.write(arr)를 통해 배열의 내용이 출력됩니다. 출력 결과는 [100, 200, 300, 400, 500, 600]가 됩니다.
11. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
{
const obj = {
a: 100,
b: 200
};
for(let key in obj) {
console.log(key);
}
}
주어진 코드는 객체 obj의 속성을 반복하여 각 속성의 키를 출력하는 예제입니다.
먼저, obj 객체는 속성 a와 b를 가지고 있습니다. for…in 반복문을 사용하여 객체의 속성을 반복할 수 있습니다.
for(let key in obj)는 obj 객체의 속성을 반복하는 반복문을 시작합니다. 각 반복에서 key 변수에는 객체의 속성 이름이 할당됩니다. 따라서 console.log(key)를 통해 현재 반복 중인 속성의 이름이 출력됩니다.
따라서 코드를 실행하면 a와 b가 각각 한 줄씩 출력됩니다.
12. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
let num = 0;
while(false){
num++;
if( num == 3 ){
continue;
}
if( num > 6 ){
break;
}
}
console.log(num);
}
주어진 코드는 while 반복문을 사용하여 조건이 거짓인 동안 반복하도록 설정되어 있습니다. 그러나 while(false)로 설정되어 있기 때문에 반복문이 실행되지 않습니다.
따라서 num 변수는 변경되지 않고 초기값인 0을 유지합니다. 그리고 마지막에 console.log(num)을 통해 num 변수의 값을 출력합니다.
결과적으로 출력되는 값은 0입니다. 왜냐하면 반복문이 실행되지 않았으므로 num 변수는 증가하지 않았습니다.
13. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
let data = [70, 80, 75, 60, 90];
let best = 0;
let score = 50;
for(let i=0; i<data.length; i++){
if(data[i]>80) {
best++;
}
if(score > data[i]) {
score = data[i];
}
}
console.log(best, score);
}
주어진 코드는 주어진 배열 data에서 특정 조건을 만족하는 요소들을 찾고, 변수 best에 그 개수를 저장하고, 변수 score에는 배열 data의 최솟값을 저장하는 것입니다.
- data: 주어진 배열입니다. [70, 80, 75, 60, 90]로 초기화되어 있습니다.
- best: 배열 data에서 80보다 큰 값의 개수를 저장하는 변수입니다. 초기값은 0입니다.
- score: 배열 data의 요소 중 가장 작은 값을 저장하는 변수입니다. 초기값은 50으로 설정되어 있습니다.
for 반복문을 사용하여 배열 data의 각 요소를 순회하면서 조건을 체크합니다.
- if(data[i]>80) 조건문은 배열 data의 요소가 80보다 큰지 검사합니다. 만약 해당 요소가 80보다 크다면 best 변수를 증가시킵니다.
- if(score > data[i]) 조건문은 배열 data의 요소가 score 변수의 값보다 작은지 검사합니다. 만약 해당 요소가 score 변수의 값보다 작다면 score 변수에 해당 요소의 값을 할당합니다.
따라서 best 변수에는 배열 data에서 80보다 큰 값의 개수가 저장되고, score 변수에는 배열 data의 최솟값이 저장됩니다.
마지막으로 console.log(best, score)를 통해 best 변수와 score 변수의 값을 출력합니다.
결과적으로 출력되는 값은 2 60입니다. 이는 배열 data에서 80보다 큰 값은 2개이고, 최솟값은 60임을 나타냅니다.
14. 다음의 보기를 보고 조건 값에 따른 결과값이 false가 나오는 경우를 작성하시오.
1
2
3
4
5
6
7
{
function func(num1, num2){
if(num1 > num2) return num1
else return num2
}
console.log(func(10, 23) + func(40, 50))
}
주어진 코드는 두 개의 숫자를 입력받아 큰 숫자를 반환하는 함수 func를 정의하고, 해당 함수를 호출하여 결과를 출력하는 것입니다.
함수 func는 두 개의 매개변수 num1과 num2를 받습니다. 이 함수는 if…else 조건문을 사용하여 num1이 num2보다 크다면 num1을 반환하고, 그렇지 않다면 num2를 반환합니다.
그리고 console.log(func(10, 23) + func(40, 50))를 통해 func 함수를 각각 인자 (10, 23)과 (40, 50)을 사용하여 호출하고, 반환된 값들을 더하여 출력합니다.
첫 번째 호출에서는 num1이 10이고 num2가 23입니다. 따라서 func(10, 23)은 23을 반환합니다.
두 번째 호출에서는 num1이 40이고 num2가 50입니다. 따라서 func(40, 50)은 50을 반환합니다.
따라서 23 + 50의 결과는 73이므로, 최종적으로 console.log에 의해 73이 출력됩니다.
15. 다음의 결괏값을 보고 빈칸을 채우시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
{
function func(){
document.write("함수2가 실행되었습니다.");
}
function callback(str){
document.write("함수1가 실행되었습니다.");
_______();
}
callback(func);
//함수1가 실행되었습니다.
//함수2가 실행되었습니다.
}
주어진 코드는 콜백 함수를 이용하여 함수 실행의 순서를 조절하는 예제입니다.
- func() 함수: “함수2가 실행되었습니다.”라는 문자열을 문서에 출력하는 함수입니다.
- callback(str) 함수: 매개변수로 문자열을 받아서 “함수1가 실행되었습니다.”라는 문자열을 먼저 문서에 출력한 후, 받은 함수를 실행하는 콜백 함수입니다.
callback(func)를 통해 callback 함수를 호출할 때 func 함수를 인자로 전달했습니다. 이것은 callback 함수가 실행될 때 func 함수가 실행되도록 설정하는 것입니다.
따라서 코드 실행 순서는 다음과 같습니다.
- callback(func)가 호출되면서 callback 함수가 실행됩니다.
- callback 함수 내부에서 “함수1가 실행되었습니다.”가 문서에 출력됩니다.
- callback 함수 내부에서 전달된 함수 func가 실행됩니다.
- func 함수 내부에서 “함수2가 실행되었습니다.”가 문서에 출력됩니다.
16. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
function func(num, name, word){
this.num = num;
this.name = name;
this.word = word;
}
func.prototype = {
result1 : function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
},
result2 : function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
},
result3 : function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
}
}
const info1 = new func("1", "함수", "실행");
const info2 = new func("2", "자바스크립트", "실행");
const info3 = new func("3", "제이쿼리", "실행");
info1.result1();
info2.result2();
}
주어진 코드는 생성자 함수와 프로토타입을 사용하여 객체를 생성하고 메서드를 추가하는 예제입니다.
- func 함수: num, name, word 세 개의 매개변수를 받아서 객체를 생성하는 생성자 함수입니다. 이 함수는 받은 매개변수를 객체의 속성으로 설정합니다.
- func.prototype: func 함수의 프로토타입 객체를 재정의합니다. 이 프로토타입 객체에는 세 개의 메서드(result1, result2, result3)가 포함되어 있습니다. 이 메서드들은 객체의 속성을 활용하여 콘솔에 메시지를 출력합니다.
- const info1 = new func(“1”, “함수”, “실행”);, const info2 = new func(“2”, “자바스크립트”, “실행”);, const info3 = new func(“3”, “제이쿼리”, “실행”);: 각각 func 생성자 함수를 사용하여 객체를 생성합니다. 생성된 객체들은 각각 info1, info2, info3 변수에 저장됩니다.
- info1.result1();, info2.result2();: 생성된 객체들의 메서드를 호출하여 콘솔에 메시지를 출력합니다.
17. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
function func(num, name, word){
this.num = num;
this.name = name;
this.word = word;
}
func.prototype.result = function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
}
const info1 = new func("1", "함수", "실행");
const info2 = new func("2", "자바스크립트", "실행");
const info3 = new func("3", "제이쿼리", "실행");
info1.result();
}
18. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
{
function func(index){
console.log("함수가 실행되었습니다." + index);
}
function callback(num){
for( let i=1; i<=1; i++){
num(i);
}
}
callback(func);
}
19. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
{
let num = 1;
while(num<=10){
document.write(num);
num++;
}
}
20. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
13
{
function func(){
let i = 10, j = 10, k = 30;
i /= j;
j -= i;
k %= j;
console.log(i);
console.log(j);
console.log(k);
}
func();
}
21. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
{
for( let i=1; i<=10; i+=2 ){
document.write(i);
}
}
22. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
{
for(let i=1; i<10; i++){
if( i == 5 ){
break;
}
document.write(i);
}
}
23. 다음을 보고 결괏값을 작성하시오!
1
2
3
4
5
6
7
8
{
for(let i=1; i<10; i++){
if( i == 5 ){
continue;
}
document.write(i);
}
}
24. 다음의 결과를 보고 빈칸을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
{
const obj = {
a: 100,
b: 200,
c:"javascript"
}
console.log(_______________________); // true
console.log(_______________________); // true
console.log(_______________________); // true
}
25. 다음의 결과를 보고 빈칸을 작성하시오!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
function solution(a, b, c){
let answer="YES", max;
let tot = a + b + c;
if(a > b) max = a;
else max = b;
if(c > max) max = c;
if(tot-max <= max) answer = "NO";
return answer;
}
console.log(solution(13, 33, 17));
}