728x90
반응형

 

 

 

{
    let num = 0;
    while( num <= 5 ){
        num++;
        console.log(num);  
    }
}

 1 2 3 4 5 6

 


num 변수가 0으로 초기화되고, num이 5 이하일 동안 while문이  실행된다.

조건이 맞으므로, num을 1 증가시키고 console.log 함수를 통해 출력 시킨다.

console.log  함수는 num이 1 증가된 후 출력 되기 때문에 5까지 출력 되지 않고 6까지 출력된다.

 

 

 

 

 

function func(){
        let i = 5, j = 4, k = 1, l, m;
        l = i > 5 || j != 0;
        m = j <= 4 && k < 1;
        document.write(l);
        document.write(m);
    }
    func();

 

true     false

 


 

이 문제는 논리 연산자를 사용하는 문제이다.

함수 func( ) 안에서 변수 i, j, k, l, m을 선언하고 이들 변수에 값을 초기화 한다.

논리 연산자 || (OR)과 &&(AND)를 사용하여 l과 변수에 값을 할당하고, 두 개의 논리식을 평가한다.

 

i=5, j=4, k=1을 각각 할당한다.

l과 m 변수는 초기화 되지 않았고, 나중에 논리 연산의 결과로 값을 할당받게 된다.

 

|| 논리 연산자는 두 개의 연산자 중에 하나라도 참이면 결과값이 참이 되는 연산자이다.

첫 번째 논리식(l = i > 5 || j != 0;) 에서는 변수 i가 5보다 크거나 (j의 값은 무시) j가 0이 아니어야 한다는 뜻이다.

i의 값이 5보다 크다는 것은 거짓이기 때문에 j !=0 (j는 0이 아니다.)만 판단하면 된다.

j는 0이 아니므로 이 논리식의 값은 true가 된다.

따라서 l 변수에는 참(true)가 할당된다.

 

 

&& 논리 연산자는 두 개의 연산자가 모두 참일 때 결과값이 참이 된다.

두 번째 논리식(m = j <= 4 && k < 1;)에서는 변수 j가 4보다 작거나 같지 않으며 변수 k의 값이 1보다 작아야 한다는 의미이다.

j <=4 j는 4보다 작거나 같다는 식이 참이므로,  k<1도 판단해야 한다.

그러나 k는 1이므로 k<1은 거짓이 된다.

 따라서 m 변수의 값은 거짓( false)가 할당된다.

 

 

 

 

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

 

A :

1    9     3

 


 

 

i /= j  는 i = i / j와 동일한 의미이다.

i의 현재 값은 10이고, j의 현재 값도 10이므로 10/10은 1이다.

따라서 i의 값은 1이 된다.

 

j -= i 는 j = j - i와 동일한 효과를 가지는 복합 대입 연산자이다.

j의 현재 값은 10, i(10에서 1로 값이 바뀜)의 값은 1이므로,

j(10) - i (1) = 9.

j의 값은 9가된다.

 

k %= j 는  k = k % j와 동일한 효과를 가지는 복합 대입 연산자이다.

%연산자는 나머지 연산자로 k(30)를 j(9)로 나눈 나머지를 k에 할당한다.

k의 현재 값은 30, j의 현재 값은 9이므로 k의 값은 3이 된다.

 

 

 

 

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

 

4   7

 

 

먼저 num1 변수에 3을 할당하고, num2 변수에 7을 할당한다.
그 다음으로, if 문이 실행된다.

if 문의 조건식은 ++num1 < 5 || ++num2 > 8 이다.

++num1은 num1의 값을 1 증가시키고, 그 증가된 값을 반환한다.

따라서 ++num1의 결과값은 4가 된다.

||는 논리 OR 연산자로, 왼쪽 피연산자가 true이면 전체 조건식이 true가 된다.

따라서 ++num1 < 5가 false이지만, ++num2 > 8은 true가 되므로, 전체 조건식은 true가 된다.
따라서 console.log(num1)이 실행되어 num1 변수의 값인 4가 출력됩니다.

그 다음으로, console.log(num2)가 실행되어 num2 변수의 값인 7이 출력된다.

이는 ++num2가 실행되지 않았기 때문이다.

++num2는 true인 경우에만 실행되기 때문이다.

 

 

 

{
    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

 

배열 num에 1, 5, 1, 2, 7, 5 값을 저장하고, 반복문을 사용하여 num의 짝수 인덱스에 해당하는 값을 출력하는 문제이다.

 

먼저, num 변수에 1, 5, 1, 2, 7, 5 배열을 할당한다.
그 다음으로, for 문이 실행된다.

for 문의 초기식에서는 i 변수에 0을 할당한다. 

for 문의 조건식에서는 i 변수가 6보다 작은 동안 식을  반복한다.

 for 문의 증감식에서는 i 변수를 1씩 증가시킨다.

반복문 내부에서는, (i+1) % 2 == 0 조건식이 실행된다.

(i+1) % 2는 i에 1을 더한 값이 2로 나누어 떨어지는지 여부를 판별하는 것이다.

이 조건식이 true인 경우에는 num[i] 값을 출력합니다.

(즉, 인덱스가 짝수인 요소들이 출력되는 것이다.)

 

반복문에서는 i 변수가 0부터 5까지 1씩 증가하면서, (i+2)%2==0 조건식이 참이 되는 경우에 num의 i번째 값을 출력한다.

num 배열에서 2,4,6번째 요소가 각각 5,2,5이므로 이 값들이 순서대로 출력된다.

 

 

 

function func(num1, num2){
        if(num1 > num2) return num1
        else return num2
    }
    console.log(func(10, 23) + func(40, 50))

 

73

 

이 문제는 두 개의 숫자 중에서 더 큰 값을 반환하여 서로 더하는 문제이다.

 

func 함수는 두 개의 숫자를 인자로 받는다.

만약 첫 번째 인자 num1이 두 번째 인자 num2 보다 크다면 num1을 반환하고, 그렇지 않으면 num2를 반환한다.

console.log 함수에서는 func(10, 23)과 func(40, 50) 두 번의 함수 호출 결과값을 더한다.

첫 번째 func 함수 호출에서는 num1에 10을, num2에 23을 인자로 전달한다.

num1이(10) num2(23)보다 작기 때문에 else 블록이 실행되어 num2인 23을 반환한다.

 

두 번째 func 함수 호출에서는 num1에 40을, num2에 50을 인자로 전달한다.

num1(40)이 num2(50)보다 작기 때문에 else 블록이 실행되어 num2인 50을 반환한다.

 

따라서 func(10,23) + func(40,50)은 23+50 즉, 73이 된다.

+ Recent posts