2024.09.10 (Day 6) -JavaScript Operator

반응형

 

▶ 제어문
• 제어문이란 프로그램의 실행 흐름을 제어하기 위한 구문이며

어떤 특정 영역의 구문을 조건에 만족하는 경우에만 실행시키고자 할 때 혹은 반복적으로 실행시키고자 할 때 사용하는 기법이다. 

 

▶ 조건문

• 조건문은 참 거짓이 나오는 조건을 명시하고 어떤 조건이 참인 경우에만 특정 코드가 실행되게 하고자 할 때 사용되는

구문이며 크게 if 문과 switch문 그리고 3항 연산자가 있다.

 

IF 문

• 조건문의 가장 대표적이고 가장 많이 사용되는 것이 if 문이다.

• if 문은 조건이 true 인 경우에만 실행되는 코드를 묶기 위해서 사용된다.

 

        let age = 23
        let adress ='서울'

//if 
        if(age <=10){
            console.log(`age : ${age}, 당신의 나이는 조건에 만족합니다`);            
        }

 

▼ 조건을 명시하는 ( ) 부분은 true 혹은 false 값이 적용이 되어야 하며

논리 타입의 값은 true, false 이지만 자바스크립트에서는 숫자, 문자, null, undefined 도

논리타입인 true, false 로 이용될 수 있다.

그러므로 if( ) 에 0, null, undefined 가 조건으로 지정되면 false 로 판단되며 1, “hello” 등의 데이터가 지정되면

true 로 판단한다.

• 만약 조건에 만족했을 때 실행되는 영역이 1줄이라면 { } 을 생략할 수도 있다.

//다양한 타입의 데이터가 true/false로 판단가능
        let data = 1
        if(data){
            console.log('data is true'); //실행
        }else{
            console.log('data is false');
        }



// if()에 들어가야하는 값은 true,false
//만약 숫자, 문자등의 데이터가 들어오면 boolean으로 변형 시켜 판단하게 되어있다.
        console.log(Boolean(1));// 값이 존재하기에 true
        console.log(Boolean(0));// 데이터가없어서 false
        console.log(Boolean(10));// 값이 존재하기에 true
        console.log(Boolean(-1));// 값이 존재하기에 true
        console.log(Boolean('hello'));// if값이 존재하기에 true
        console.log(Boolean(null));// 데이터가없어서 false
        console.log(Boolean(undefined));// 데이터가없어서 false

        if('hello'){
            console.log('..true'); //실행
        }else{
            console.log('..false');
        }

 

▼ If – else

• 조건에 만족하지 않는 경우에 실행시켜야 하는 코드도 있다.

이 경우에는 else 예약어를 이용해 조건에 만족하지 않은 경우에 실행할 코드를 명시한다.

 

• else 는 독립적으로 사용될 수는 없다.

항상 if에 조건이 명시되어야하고 그 조건에 만족하지 않는 경우에 실행될 코드를 else 에 담는다.

else 부분도 else { } 형태처럼 실행시켜야 하는 부분을 { } 로 묶어야 하는데 만약 실행시켜야 하는 코드가 1줄이라면 { } 을 생략할 수도 있다.

 

        let age = 23
        let adress ='서울'


//if else
        if(age <=30){
            console.log(`age : ${age}, 당신의 나이는 조건에 만족합니다`);
        }else{
            console.log(`age : ${age}, 당신의 나이는 조건에 만족하지 않습니다.`);
            
        }

 

// if else 블록이 한줄이라면 {}생략가능
        if(age < 30)
            console.log('조건에 만족합니다');
        else
            console.log('조건에 만족하지 않습니다');

 

 

If – else If – else

• 어떤 로직이 실행되어야 하는 경우 조건을 여러 번 주어야 하는데 이때는 else if( ) 를 사용한다.

• else if 를 사용하려면 먼저 if 가 먼저 선언되어 있어야 하고 그 조건에 만족하지 않는 경우 다른 조건을 명시하고자 할 때 사용한다.

 

// if else if
        if(age < 30 && adress ==='서울'){
            console.log(`age : ${age}, adress : ${adress}  나이조건 만족 , 서울 거주`);
        }else if (age < 30 && adress === '부산'){
            console.log(`age : ${age}, adress : ${adress}  나이조건 만족 , 부산 거주`);
        }else{
            console.log(`age : ${age}, adress : ${adress}  나이,거주 만족하지 않습니다`);
        }

else if 뒤에 마지막으로 else 가 추가될 수도 있고 추가되지 않을 수도 있다.

 

 

3항 연산자

▼ 3항 연산자는 말 그대로 연산자이며 연산자라 함은 무언가 연산이 실행되고 그 연산에 의한 결과가 나오게 된다.

 

• 3항 연산자도 결과가 나오지만 조건을 명시할 수 있고 그 조건에 따라 다르게 결과가 나오게 하는 연산자이다.

 

        let data = 8
        let result
        if(data % 4 === 0){
            result = '4의 배수입니다.'
        }else{
            result = '5의 배수가 아닙니다.'
        }
        console.log(result);
        
        //위 코드를 3항 연산자로 작성해보자
        let result2 = (data % 4 === 0) ? "4의 배수입니다." : "4의 배수가 아닙니다."
        console.log(result2);

 

switch - case 문

• 조건문을 작성할 때 switch – case 구문을 사용할 수도 있다.

switch – case 문은 어떤 데이터의 값이 여러 개가 나올 수 있는데 그 값이 어떤 것인지에 따라 실행되는 구문을 다르게 조건을 주고자 할 때 사용된다.

• switch – case 문을 사용한다면 switch( ) 에는 어떤 데이터가 명시되어야 한다.. 데이터의 값에 대한 조건은 case 예약어로 명시하는데 case 뒤에 값을 명시하고 : 뒤에 실행로직을 { } 로 명시한다.

case 를 여러 개 나열하여 switch 에 명시된 데이터 값에 따라 맞는 case 부분이 실행되게 작성한다.

 

또한 case 의 맨 마지막에 default 가 작성될 수 있으며 생략이 가능하다.

만약 작성한다면 case 가 나열되고 맨 마지막에 작성된다.

default 는 위에 선언된 case 값에 만족하지 않는 경우 실행될 구문을 명시하기 위해서 사용되며

switch – case 문에서 만약 case 가 여러 개 있는 경우 윗부분 case 값 조건에 만족하게 되면

그 위치부터 아래에 선언된 모든 case 와 default 부분이 실행되게 된다.

 

//random() - 랜덤값 (난수 발생) 0~1.0 실수로 
//0~3의 난수, *3
//round() - 반올림
let data = Math.round(Math.random() * 3)
console.log(`random : ${data}`)

switch(data % 3){
  case 0: {
    console.log('나머지는 0입니다.')
  }
  case 1: {
    console.log('나머지는 1입니다.')
  }
  case 2: {
    console.log('나머지는 2입니다.')
  }
  default: {
    console.log('default 부분이 실행되었습니다.')
  }
}

//random : 2
// main.js:17 나머지는 2입니다.
// main.js:20 default 부분이 실행되었습니다.

 

 

• 만약 특정 위치의 case 값에 일치하는 경우 그 위치의 case 만 실행되게 하고자 한다면 break를 사용해 주어야 한다.

• switch – case 에서 break 가 사용되었다면 break 에 의해 switch 영역을 벗어나게 되며

즉 switch 부분의 실행이 끝나게 됨으로 break 가 작성된 하위 case 혹은 default 부분은 실행되지 않게 된다.

 

let data = Math.round(Math.random() * 3)
console.log(`random : ${data}`)

switch(data % 3){
  case 0: {
    console.log('나머지는 0입니다.')
    break
  }
  case 1: {
    console.log('나머지는 1입니다.')
    break
  }
  case 2: {
    console.log('나머지는 2입니다.')
    break
  }
  default: {
    console.log('default 부분이 실행되었습니다.')
  }
}


//break 추가 후 테스트
//random : 2
// main.js:19 나머지는 2입니다.

 

 

for 반복문

 

▶ 반복문

• 반복문은 특정 코드 부분을 반복적으로 실행시키기 위해 사용된다.

• 반복문은 for, while 문이 주로 사용되며 드물게 do – while 문이 사용되기도 한다.

• for 문을 작성하는 방법은 특정 변수 값을 증감시켜 조건에 만족하는 동안 반복적으로 실행되게 한다.

 

1. 초기값 : 가장 처음 한번만 실행, for 반복을 위해 사용할 변수 초기화에 이용

2. 반복조건 : 가장 처음 한번 실행, 이후 증감식이 실행된 후에 실행, body 부분이 실행될 것인지 판단

3. 증감식 : body 가 실행된 후에 실행, 데이터를 증감시키기 위해 이용

4. body : 반복조건이 만족하는 경우 계속 실행될 구문

 

for문의 실행 흐름

 

        for(let i = 0; i < 3; i++){
            console.log(`hello ${i}`)  //0 1 2
        }

        for(let i = 3; i > 0; i--){
            console.log(`hello ${i}`)   // 3 2 1
        }

 

• for 문을 이용하면서 초깃값 부분에서 변수를 1개 이상 선언할 수도 있으며

증감식에서 값 증가 뿐만 아니라 감소를 명시할 수도 있다.

        for(let data1 =1 , data2 = 10; data1 <= 5 && data2 > 5; data1++,data2-= 2){
            console.log(`data1 : ${data1}, data2: ${data2}`);
            
        }

 

▷ 배열 데이터를 사용하여 for문 작성

        let array = [10,20,30]
        for(let i = 0; i < array.length; i++){
            console.log(`array [${i}] = ${array[i]}`);
        }

 

▷ for문) 1부터 10까지 더해서 최종 결과 출력해보기 

        let sum = 0
        for (let i = 1; i <= 10; i++) {
            sum += i
        }
        console.log(sum);

55

 

▷ for문) 1부터 10까지 더해서 최종결과 출력 (홀수만 더해서)

        let sum2 = 0
        for (let i = 1; i <= 10; i++) {
            if(i % 2 !== 0){
                sum2 += i
            }
            
        }
        console.log(sum2);

25

 

▷ for문) 구구단 2단

        for(let i =1; i<=9; i++){
            console.log(`2 X ${i} = ${2*i}`);
        }

 

 

 

while

• while 문은for문이 정해진 횟수만큼 반복한다면, while 문은 조건식이 true 일 경우에 계속해서 반복한다.

while 문은 증감조건만 명시

 

do-while

• do – while 문도 while 문의 일종이다.

• 반복 조건을 명시하고 그 조건이 true 이면 반복적으로 body 부분이 실행되는 구조이다.

• do – while 문 마지막 부분에 조건을 명시하게 되며 그럼으로 조건에 만족한다면 body 부분이 반복적으로 실행되는 것은 동일하지만 body 부분이 최초에 한번실행이 되는지의 차이가 있다.

 

▼ while문 작성해보기

        while(false){
            console.log('while body');
        }
        do {
            console.log('do while do');
        }while(false)

 

▼while로 1~10더하기

        let no = 1
        let sum = 0
        while (no <= 10){
            sum += no
            no++
        }
        console.log(`sum : ${sum}`);

 

▼ while로 구구단

        let i = 1
        while(i<=9){
            console.log(`2x${i} = ${2*i}`);
            i++
        }

 

 

break, continue

• for문 혹은 while, do – while 문을 이용해서 반복문을 작성하다 보면 break 혹은 continue 를 이용하는 경우가 있는데

break 와 continue 는 반복문 내에 작성되어 반복문의 실행 흐름을 제어하기 위해서 사용된다.

 

물론 break 는 switch – case 문에도 사용되며 switch 문에 break 를 사용하면 switch 를 벗어나게 되어

제어하는 역할로도 사용되고 body 내에서 반복을 끝내야 하는 경우 혹은 반복 조건을 다시 판단해야 하는 경우가 있는데

이를 위해 제공되는 것이 break, continue 이다.

 

• continue 와 break 는 차이가 있는데 반복문이 실행되다가 continue 를 만나게 되면 continue 아랫 부분은실행되지 않으며 다시 반복 조건을 판단하게 된다. 그런데 break 문은 break 를 만나게 되면 반복문을 끝내게 된다.

    for(let i = 0; i< 10; i++){
        if(i%2 ===0){
            continue
        }
    console.log(`for body ${i}`);
    if(i===7){
        break
    }
}

 

 

 

 

• break 와 continue 에 의해 제어되는 반복문은 break 와 continue 를 감싸고 있는 가장 가까운 반복문이다.

이 부분이 중요할 수 있는데 이유는 반복문이 중복 작성 될 수 있기 때문이다.

for(let no1=0; no1<2; no1++){
    console.log(`position1 : ${no1}`);
    for(let no2=0; no2<2; no2++){
        console.log(`position2 : ${no1}, ${no2}`);
        // break
    }
}

break 전과 후

 

만약  특정 위치의 반복문이 제어되게 하고 싶다면 라벨을 이용해야 한다

 

라벨이란 개발자가 지정하는 임의 식별자이며 반복문에 식별자를 선언하고 break 에서 그 라벨을 명시하여해당 반복문이 제어되게 할 수 있다.

 

myloop:for(let no1=0; no1<2; no1++){
    console.log(`position1 : ${no1}`);
    for(let no2=0; no2<2; no2++){
        console.log(`position2 : ${no1}, ${no2}`);
        break myloop
    }
}

 

 

 

반응형