javascript

Test04 학원에서 시험 봤어요 !

grovy 2023. 3. 24. 10:40
728x90

학원에서 시험 봤어요 같이 풀어봐요 ! 

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);
}

 

indexOf 를 써서 첫번째 a 값을 가져와서 1 

indexOf 는 앞에서 부터 값을 체크해요 

lastindexOf 를 써서 첫번째 a 값을 가져와서 3  

lastindexOf 은 뒤에서 부터 a값을 체크 해요 

includes()는 a값이 있으므로 true

includes()는 값의 유무를 따져서 true, false를 반환해요 

 

02. 다음의 결괏값을 보고 빈칸을 채우시오.

{
    function func(){
        document.write("함수2가 실행되었습니다.");
    }
    function callback(str){
        document.write("함수1가 실행되었습니다.");
        _______();
    }
    callback(func);

    //함수1가 실행되었습니다.
    //함수2가 실행되었습니다.
}

callback함수유형은 함수안에 함수를 실행시킨다는 의미에요 

 

그래서 callback(func)는 

 

function callback(func){

func(); 

// 매개변수로 받은 이름을 실행시켜요 

}

위에 처럼 작동합니다. 

03. 결괏값을 작성하시오.

{
    function func(a, b){
        console.log(arguments[0]);
        console.log(arguments[1]);
    }
    func("1", "2");
}

아규먼트 함수에 대한 문제에요 

fucntion func(a, b){ 

arguments[0] = a;

arguments[1] = b;

}

위처럼 값을 저장하기 때문에 

출력은 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();
}

 

맨끝에 prototype 함수중 result1 , result2를 실행시킵니다. 

func(num, name, word){

this.num = num;
this.name = name;
this.word = word;

}

이렇게 함수를 선언하여 입력받은 변수를 func함수의 값으로 설정합니다. 

그래서   console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다."); 에 각각 값이 들어가서

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();
}

 4번 문제와 똑같아요 함수 info1.result()만 실행되요 

 

06. 결괏값을 작성하시오.

{
    function func(index){
        console.log("함수가 실행되었습니다." + index);
    }
    function callback(num){
        for( let i=1; i<=1; i++){
            num(i);
        }
    }
    callback(func);
}

callback함수유형은 함수안에 함수를 실행시킨다는 의미에요

 

그래서 callback(func)는 

 

function callback(num){

num(); 

// 매개변수로 받은 이름을 실행시켜요 

}

callback(func)의 func는  func()함수를 실행시키는거에요

for 문 안에 있는 num()은 

for 문 조건에 1번 실행되므로 

 

func()함수를 1번 실행시키고 

func(index)함수는 매개변수 함수이기 때문에 

매개변수로 받은 i 값인 1 을 포함한 

함수가 실행되었습니다. 1 이 실행되요 

 

07. 결괏값을 작성하시오.

{
    let num = 1;

    do {
        num++;
        console.log("실행되었습니다.");
    } while (num <= 5);

}

do while문에 대한 문제에요 

do를 실행시키고 

while( 조건 ) 조건에 맞을때마다 반복이 됩니다. 

 

초기 num 값이 1이기 때문에 

num++ 는 while 문이 끝난뒤 값을 증가 시켜요

consol.log가 1번 실행되고

num = 2 ..3..4..5 값이 각각 들어가서

총 5번 실행되요

 

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);

}

join() 문은 배열 을 문자열로 나열시켜요 나열시킬때는 

join( " * " )  입력받은 매개변수*을 구분자로 써서 

text1의 결과는 join(*)로 인해 

100*200*300*400*500

text2의 결과는 join(-)로 인해 

100-200-300-400-500

text3의 결과는 join()로 인해 

100200300400500

text4의 결과는 join(" ")로 인해 

100 200 300 400 500

처럼 출력되요 

09. 다음을 최대한 짧게 약식으로 표현하시오.

{
    function func(str){
        return str;
    }
    func("함수가 실행되었습니다.")
}

화살표함수로 출력하는 문제에요 

function func(str){
        return str;
}

위 함수를 아래처럼 기본형으로 바꿨어요 

func = (str) => { return str }

기본형의 리턴값이 1개 이므로 매개변수로 받은 str을 리턴 시켜주는 함수이기 때문에 

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();
}

i /= j; 은 i = i / j 이므로 i 값은 1 

 

i = 1 으로 변경되었으므루 아래 i 값들은 모두 1 로 계산해요 


j -= i;  은 j= j-i 이므로 j = 9
k %= j는 k = k%j  

k를 j 로 나눈 나머지 값 이므로 

30을 9로 나눈 나머지값은 3이므로 

 

출력은 

1 9 3 이 나와요 

 

11. 다음을 결과값을 작성하시오.

{
    let k = 0;
    let temp;
    for(let i=0; i<=3; i++){
        temp = k;
        k++;
        console.log(temp + "번");
    }
}

for 문에 대한 문제에요 

tem에 매번  k 값에 들어가며

console을 찍은후 

for 문 i = 0 이 종료된뒤 

k = k+1 을 연산하며 k값이 증가하고  

i값이 증가합니다. 

 

console엔 

0번

1번

2번

3번

위처럼 출력이 되요 

 

12. 다음을 결과값을 작성하시오.

{
    let num1 = 3;
    let num2 = 7;
    if(++num1 < 5 || ++num2 > 8){
        console.log(num1);
    }
    console.log(num2)
}

if 문안에 있는 

++num1 값은 참이기 때문에 실행이 되고  num1값은 4로

++num2 값은 거짓이기 때문에 실행이 되지 않아 num2는 그대로 7입니다.

 

출력은 if문 안에 있는 || or 연산자 때문에  ++num1 값은 참이므로 조건 문이 실행됩니다. 

console엔

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]);
        }
    }
}

for문과 배열에 관한 문제에요 

for은 i가  0부터 6까지 총 7번이 반복되고 

if문에 있는 조건 

((i+1) % 2 == 0)

( i + 1 )가 %2  ==0 는 2로 나누었을때 나머지가 0이므로 

i가 홀수일때만 작동해서 

배열의 순서가 1번째 3번째 5번째 만 실행되어서 

console 에 5 7 5 만 실행되요 

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("*");
        }
    }
}

for문과 switch문에 관한 문제에요 

i가 9부터 1씩 줄어들고 0이면 종료되요 총 9번 반복 하죠 ? 

switch 문에  num[i] % 2  조건이에요 

첫번째 case문은 num[i] % 2  의 값이 1일때

console을 출력해줘 라고 하고

break문을 통해 멈춘뒤 for문이 실행되요 

 

2번째 default는 나머지 값이 1이 아닌경우 실행이 되며 console에 * 을 출력시키므로 

 

num[i] % 2  가 1일때 즉 홀수일때만 출력이되므로 

9 7 5 3 1

num[i] % 2  가 1이 아닐땐

* * * * * 가 출력 되므로 

 

9*7*5*3*1이 출력되요 

 

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);
}

for 문안에 조건은 i 값이 0 부터 7 까지 총 8 번 반복되고 

if 문안에 조건 i%2 == 1일 때만 실행되므로 

즉 

i 가 1 3 5  7일때만 실행되고 

cnt 는1씩 증가하고 

sum 값에 i 를 더해줘요 

 

그래서 답은 

cnt = 4

sum =16 은 1 3 5 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)
}

for은 i값이 0부터 data.length 값 즉 5 i값이 5까지 증가 시켜

if 문안에 조건에 따라서

값이 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));
}

if문의 조건에 따라 값이 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));
}

for of 구문에 따라 배열 안의 값이 반복되고 

x %10 == 3 인 값이므로 23 , 53, 33 인 의 갯수

3이 출력됩니다.