01. 결괏값을 작성하시오.
{
const str = "javascript";
const text = str.indexOf("a");
const text2 = str.lastIndexOf("a");
const text3 = str.includes("a");
console.log(text);
console.log(text2);
console.log(text3);
}
💎정답💎
1 3 true
02. 다음의 결괏값을 보고 빈칸을 채우시오.
{
function func(){
document.write("함수2가 실행되었습니다.");
}
function callback(str){
document.write("함수1가 실행되었습니다.");
_______();
}
callback(func);
//함수1가 실행되었습니다.
//함수2가 실행되었습니다.
}
💎정답💎
str
오답노트
이번 문제는 콜백 함수에 대한 문제였습니다.
콜백 함수
콜백 함수는 다른 함수에 인자로 전달되어, 그 함수의 작업이 끝난 후에 호출되는 함수를 말합니다.
콜백 함수는 자바스크립트에서 비동기 처리를 구현하는 가장 일반적인 방법 중 하나입니다. 아래의 주석부분을 콜백 함수로 표현한 것입니다.
{
function func(){
document.write("2.함수 실행");
}
function callback(str){
document.write("1.함수 실행");
str();
}
callback(func);
}
콜백 함수는 비동기 처리뿐만 아니라, 이벤트 처리(event handling) 등에서도 사용됩니다. 콜백 함수를 사용하면 함수 간의 결합도(coupling)를 낮출 수 있으며, 코드의 재사용성을 높일 수 있습니다.
하지만, 콜백 함수가 중첩(nesting)되는 경우에는 코드의 가독성이 떨어지고, 콜백 지옥(callback hell)이라는 문제가 발생할 수 있습니다.
따라서, ES6에서는 프로미스(Promise)와 async/await을 도입하여, 비동기 처리를 더욱 편리하게 다룰 수 있게 되었습니다.
빈 칸의 답은 str()인데, callback함수를 호출하는 실행문입니다.
03. 결괏값을 작성하시오.
{
function func(a, b){
console.log(arguments[0]);
console.log(arguments[1]);
}
func("1", "2");
}
💎정답💎
1 2
04. 결괏값을 작성하시오.
{
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();
}
💎정답💎
1. 함수가 실행되었습니다.
2. 자바스크립트가 실행되었습니다.
05. 결괏값을 작성하시오.
{
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();
}
💎정답💎
1. 함수가 실행되었습니다.
06. 결괏값을 작성하시오.
{
function func(index){
console.log("함수가 실행되었습니다." + index);
}
function callback(num){
for( let i=1; i<=1; i++){
num(i);
}
}
callback(func);
}
💎정답💎
함수가 실행되었습니다.1
오답노트
이번 문제는 콜백 함수에 대한 문제였습니다.
콜백 함수
콜백 함수는 다른 함수에 인자로 전달되어, 그 함수의 작업이 끝난 후에 호출되는 함수를 말합니다.
콜백 함수는 자바스크립트에서 비동기 처리를 구현하는 가장 일반적인 방법 중 하나입니다. 아래의 주석부분을 콜백 함수로 표현한 것입니다.
callback 함수를 써서 num(i)값을 index로 넘어가서 "함수가 실행되었습니다." + index을 출력하면
함수가 실행되었습니다. 1입니다
07. 결괏값을 작성하시오.
{
let num = 1;
do {
num++;
console.log("실행되었습니다.");
} while (num <= 5);
}
💎정답💎
실행되었습니다. x5
오답노트
이번 문제는 do while문에 관한 문제였습니다.
do while문
조건에 따라 반복을 계속할지를 결정할 때 사용하는 것은 while 문과 동일합니다.
다만, 무조건 중괄호 {} 블럭을 한번 실행하고, 조건을 검사하여 반복을 결정합니다.
{
let num = 0;
do {
document.write(num);
num++;
} while (num<5);
}
- 변수 num에 1을 할당합니다.
- do-while 반복문을 시작합니다.
- num 값을 1 증가시킵니다.
- "실행되었습니다."라는 메시지를 콘솔에 출력합니다.
- num 값이 5보다 작거나 같은지 확인합니다.
- num 값이 5보다 작거나 같으면, 3번부터 5번까지의 과정을 반복합니다.
- num 값이 6이 되면, 반복문을 종료합니다.
따라서 위 코드는 총 5번의 "실행되었습니다." 메시지를 출력하며, 반복이 종료된 후에 num 값은 6이 됩니다.
08. 결괏값을 작성하시오.
{
const arr = [100, 200, 300, 400, 500];
const text1 = arr.join("*");
const text2 = arr.join("-");
const text3 = arr.join("");
const text4 = arr.join(" ");
console.log(text1);
console.log(text2);
console.log(text3);
console.log(text4);
}
💎정답💎
100*200*300*400*500
100-200-300-400-500
100200300400500
100 200 300 400 500
09. 다음을 최대한 짧게 약식으로 표현하시오.
{
function func(str){
return str;
}
func("함수가 실행되었습니다.")
}
💎정답💎
func = str => str;
10. 다음을 결과값을 작성하시오.
{
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();
}
💎정답💎
1,9,3
오답노트
이번 문제는 연산자에 관한 문제였습니다.
대입 연산자
대입 연산자는 변수에 값을 대입할 때 사용하는 이항 연산자이며, 피연산자들의 결합 방향은 오른쪽에서 왼쪽입니다.
또한, 앞서 살펴본 산술 연산자와 결합한 다양한 복합 대입 연산자가 존재합니다.

연산자의 종류를 보며 하나씩 대입해보면 됩니다.
i /= j 했을 때 i는 1이 되고, j -= i를 했을 때 j는 9가 됩니다.
k%=j를 했을 때 나머지를 구하면 되므로 답은 3입니다.
11. 다음을 결과값을 작성하시오.
{
let k = 0;
let temp;
for(let i=0; i<=3; i++){
temp = k;
k++;
console.log(temp + "번");
}
}
💎정답💎
0번 ~ 3번
오답노트
k를 0이라고 지정해주고, 반복문을 돌려주었습니다.
temp = k; 와 k++;로 증감시켜주어 console.log로 출력해 0번~3번이 출력되었습니다.
12. 다음을 결과값을 작성하시오.
{
let num1 = 3;
let num2 = 7;
if(++num1 < 5 || ++num2 > 8){
console.log(num1);
}
console.log(num2)
}
💎정답💎
4 7
13. 다음을 결과값을 작성하시오.
{
let num = [1, 5, 1, 2, 7, 5];
for(let i=0; i<6; i++){
if((i+1) % 2 == 0){
console.log(num[i]);
}
}
}
💎정답💎
5 2 5
오답노트
이번 문제는 for문과 if문을 사용한 문제였는데요, num이라는 배열에 각각 값을 넣어줍니다.
그리고 반복문 안에서 인덱스 값을 0~6까지 반복시켜줍니다. if문을 사용해 조건을 걸어주는데 i+1을 2로 나누었을 때 0이 되면 출력을 시켜줍니다. i가 인덱스 값이기 때문에 i가 홀수일 때 출력이 되는 겁니다.
14. 다음을 결과값을 작성하시오.
{
let num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for(let i=9; i>=0; i--){
switch(num[i] % 2){
case 1:
console.log(num[i]);
break;
default:
console.log("*");
}
}
}
💎정답💎
9*7*5*4*1*
오답노트
이번 문제는 for문과 switch문에 관한 문제였습니다.
먼저, 배열 num에 0부터 9까지의 숫자가 저장되어 있습니다.
그리고 for문을 사용하여 i를 9부터 0까지 감소시키면서, switch문을 통해 num[i]가 홀수인지 짝수인지를 판별합니다.
num[i] % 2는 num[i]를 2로 나눈 나머지를 의미하며, 이 값이 1인 경우(홀수인 경우)에는 console.log(num[i])를 실행하여 홀수를 출력합니다.
그러나, num[i]가 짝수인 경우에는 default 블록이 실행되어 "*"를 출력합니다. 이는 홀수가 아닌 경우에도 출력을 하기 위한 조건문입니다.
따라서, 위 코드는 9부터 0까지의 숫자를 반복하면서 홀수는 그대로 출력하고, 짝수는 "*"를 출력하는 코드입니다.
15. 다음을 결과값을 작성하시오.
{
let cnt = 0;
let sum = 0;
for(let i=0; i<=7; i++){
if(i%2 == 1){
cnt++;
sum = sum + i;
}
}
console.log(cnt + ", "+sum);
}
💎정답💎
4,16
오답노트
먼저, 변수 cnt와 sum을 각각 0으로 초기화합니다.
그리고 for문을 사용하여 i를 0부터 7까지 증가시키면서, if문을 사용하여 i가 홀수인지 짝수인지를 판별합니다.
i%2 == 1는 i를 2로 나눈 나머지가 1인 경우(홀수)를 의미하며, 이 조건이 참일 경우에는 cnt를 1 증가시키고, sum에 i를 더합니다.
따라서, for문이 끝나면 cnt는 홀수의 개수를, sum은 홀수들의 합을 나타내게 됩니다.
마지막으로, console.log(cnt + ", " + sum)을 실행하여 홀수의 개수와 합을 출력합니다.
따라서, 위 코드는 0부터 7까지의 숫자 중에서 홀수의 개수와 홀수들의 합을 구하여 출력하는 코드입니다.
16. 다음을 결과값을 작성하시오.
{
let data = [70, 80, 75, 60, 90];
let best = 1;
let score = 0;
for(let i=0; i<data.length; i++){
if(data[i]>80) {
best++;
}
if(score < data[i]) {
score = data[i];
}
}
console.log(best, score)
}
💎정답💎
2, 90
17. 다음을 결과값을 작성하시오.
{
let a, b, result;
a = 7, b = 4
result = a & b;
console.log(result)
}
💎정답💎
4
18. 다음을 결과값을 작성하시오.
{
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));
}
💎정답💎
NO
19. 다음을 결과값을 작성하시오.
{
function solution(a, b, c){
let answer;
if(a < b) answer = a;
else answer = b;
if(c < answer) answer = c;
return answer;
}
console.log(solution(2, 5, 1));
}
💎정답💎
1
20. 다음을 결과값을 작성하시오.
{
function solution(day, arr){
let answer = 0;
for(let x of arr){
if(x % 10 == day) answer++;
}
return answer;
}
arr = [25, 23, 11, 47, 53, 17, 33];
console.log(solution(3, arr));
}
💎정답💎
3
함수명은 solution이며, 매개변수로 day와 arr을 받습니다.
for..of문을 사용하여 배열 arr의 각 요소를 순회하면서, 해당 요소의 일의 자리 숫자가 day와 같은지를 확인합니다.
x % 10은 x를 10으로 나눈 나머지를 나타내며, 이 값이 day와 같으면 answer를 1 증가시킵니다.
따라서, solution 함수는 arr 배열에서 일의 자리 숫자가 day와 같은 요소의 개수를 반환합니다.