본문 바로가기
코딩도전기/Java script

CODO DAY5_Java Script(Switch문&반복문&제어문&함수&배열)

by 코도꼬마 2023. 2. 7.

Switch(Case By Case)

  • 특정 case마다 특정 내용을 실행
  • switch는 if처럼 복잡한 조건을 다루지 못하는 한계가 있음(단순한 조건)
  • 중요한 내용을 다룰 경우 사용
  • 속도가 빠르지만 메모리를 많이 차지함

var item = '콜라';

switch(item){ //코드는 코드블록에서 시작하면 끝까지 실행해야됨
    case "콜라":
        console.log(item + '가 나왔습니다');
        break;  //break가 없다면 끝까지 내려가게 됨

    case "생수":
        console.log(item + '가 나왔습니다');
        break;   //break는 진행중인 내용을 코드블록 밖으로 탈출시켜줌

    case "오렌지주스":
        console.log(item + '가 나왔습니다');
        break;

    default:
        console.log('해당음료가 없습니다');
}

 

If VS Switch

  • if문은 조건에 맞을 경우 실행함
  • switch문은 조건을 순서대로 실행해보며 맞는 조건을 찾음

 

 

 

 

반복문

  • 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 명령문(단순한 일을 반복 할 때 사용)
  • 자동화”를 위해 가장 중요한 조건
  • “특정한 조건”이 만족되어야 반복
  • For문 몇번까지 반복 / While문 그만하라고 할 때 까지 반복

 

For

  • 반복 횟수가 정해진 경우 유용

<script>
    //for는 반복 횟수가 정해진 경우 유용
    //for(이녀석이; 이것을만족하면; 증가또는감소){}
    
    for(var cup=1; cup<=10; cup++){
        console.log("물" + cup + "잔 떠왔습니다")
    }
</script>

 

이중 for문

  • for문 안에 for문이 있는 형태
  • 바깥쪽 for문이 한번 실행될 때마다 안쪽 for문이 모두 반복되어 끝나면, 다시 바깥쪽 for문을 실행
//물을 10잔 가져오려고 한 이유는 커피를 10잔을 타기 위해서이다.
//커피를 타기 위해 물 한 잔당 2개의 믹스를 넣자

for(var cup=1; cup<=10; cup++){
    console.log("물" + cup + "잔 떠왔습니다");
    for(var spoon=1; spoon<=2; spoon++){
        console.log("커피 " + spoon + "스푼");
    }
}

 

While

  • 반복 횟수가 정해지지 않은 경우 유용

//while 조건이 true면 영원히 반복
//while은 반복횟수가 정해지지 않은 경우 유용    

var i=0;
         
while(true){
    console.log("죽어야 끝난다" + i);
    i++;
    if(i==10){
        break;
    }
}

 

Do-While

  • do while은 일단 실행하고 나서 조건을 체크
  • 조건이 부합할 경우 while과 do while은 동일하게 동작
  • 조건이 부합하지 않을 경우 다른 결과를 냄

cnt = 1;

do{
    cnt++;        //먼저 실행
}while(cnt<10);  //이후 조건을 체크
console.log('while : ' + cnt);

//do while은 조건이 만족하지 않을 경우 while과 결과가 달라짐

 

 

제어문

 

Break

  • 특별한 경우 영역 안의 내용을 모두 실행 하지 않고 빠져 나오는 방법
  • 좋은 예로 switch문의 case가 있음
var i =0;

for(i=0; i<10; i++){
    console.log(i);
    if(i == 3){
    break;
    } 
}

 

Continue

  • 특별한 경우 무시하고 지나치는 방법
for(var i=0; i<10; i++){
	if(i==3){
		continue;
}
	console.log(i);
} //3만 제외

for(var i=0; i<10; i++){
    if(i%3==0){
        continue;
    }
} //3의 배수만

 

 

함수(function)

  • 동작을 실행해 주는 무언가
  • function 메소드이름(매개변수){실행문; return(반환문);} - 구성요소를 모두 넣어주지 않아도 됨

 

var dish;  //빵을 담을 그릇

//hoisting : 함수가 아래에 선언되어 있어도 미리 읽어들임
dish = toaster('식빵');  
console.log(dish);

function toaster(input){  //키워드  함수명(매개변수)
    console.log(input + '이 구워지고 있다')  //실행문
    return '구워진' + input;  //반환문
}

 

  • 메소드는 구성요소를 꼭 모두 가지고 있는 것은 아님

function 토스트기(빵){
    console.lot(빵 + '을 굽는다');
    return '구워진' + 빵;
}

function 번호표기계(){
    return "번호표";
}

function 저금통(동전){
    console.log(동전 + "적립");
}

function 호출벨(){
    console.log('호출!!');
}

 

 

배열

  • 여러 개의 변수를 하나에 담는 기능
  • 변수를 일렬로 세워놓고 각 상자에 번호를 붙여 놓은 형태
  • 배열의 첫번째 값은 0번째(자기자신을 기준으로 떨어져 있는 위치를 말하는 것임으로 위치의 차이가 없어 0부터 시작)
  • 각 잔들은 기준 잔에서 얼마나 떨어져 있는지가 이름이 됨
  • 값을 넣거나 부를 때 이 이름을 사용
  • 배열의 크기는 거의 무한

 

  • length 속성은 해당 배열의 길이 값(많이 사용)

 

Function

<body> //function 버튼 삽입
    <button onclick="arrPush()">push</button>
    <button onclick="arrPop()">pop</button>
    <button onclick="arrUnshift()">unshift</button>
    <button onclick="arrShift()">shift</button>
    <hr/>
    <button onclick="arrSlice()">slice</button>
    <button onclick="arrSpliceDel()">splice-Del</button>
    <button onclick="arrSpliceAdd()">splice-Add</button>
    <hr/>
    <button onclick="arrConcat()">concat</button>
    <button onclick="arrDelete()">delete</button>
    <button onclick="arrJoin()">join</button>
</body>

<script>
    //js에서는 배열을 편리하게 사용하기 위한 함수를 제공
    var arr = [];
    var i = 1;

    function arrPush(){// 값을 뒤쪽에서 순차적으로 넣음
        arr.push(i);
        i++;
        console.log(arr);
    }

    function arrPop(){ //뒤에서 순차적으로 뺌
        var val = arr.pop();
        console.log(val, arr);
    }

    function arrUnshift(){ //앞으로 넣음
        arr.unshift(i);
        i++;
        console.log(arr);
    }

    function arrShift(){ //앞에서 빼냄
        console.log(arr.shift()); //뺀값만 콘솔에 보여주나 배열에도 영향을 미침

    }

    function arrSlice(){ //범위 가져오기(기존 배열은 그대로 두고-해치지 않음) *많이 사용*
        //slice(몇번부터 가져오고, 몇번부터 버려)
        arr =[0,1,2,3,4,5,]
        console.log(arr);
        var newArr = arr.slice(1,3)  //1번 인덱스부터 가져오고, 3번 인덱스부터 버려
        console.log(newArr);  //원본 배열은 보존됨
        console.log(arr);
    }

    var strArr = ['마', '가', '다', '바', '나', '라'];
    function arrSpliceDel(){
        var sortArr = strArr.sort(); //정렬 ▲(오름차순) ▼(내림차순) : 넓은면이 큰숫자
        console.log(sortArr);

        // splice(해당인덱스부터, 삭제할 갯수, 추가할 값)
        sortArr.splice(2,2);  //원본을 변경
        console.log(sortArr);
    }

    function arrSpliceAdd(){
        var sortArr = strArr.sort();
        console.log(sortArr);

        // splice(해당인덱스부터, 삭제할 갯수, 추가할 값)
        // sortArr.splice(2,0,'A','B','C');  //원본을 변경

        // 다,라,마 -> A,B,C
        sortArr.splice(2,3,'A','B','C');
        console.log(sortArr);
    }

    function arrConcat(){
        //newArr = arry1.concat(arry2,arry3,arry4,...)
        var arr1 = [1,2,3,4,5];
        var arr2 = ['A','B','C','D'];
        var totalArr = arr1.concat(arr2);
        console.log(totalArr);

        totalArr = totalArr.concat('E');
        console.log(totalArr);
    }

    //배열의 특정 인덱스를 삭제
    function arrDelete(){
        delete arr[2];  //권장하지 않음 / splice를 사용 권장
        console.log(arr);
        arr[2] = 'new';
        console.log(arr);
    }

    function arrJoin(){
        console.log(arr);
        console.log(arr.valueOf());
        console.log(arr.join('_'));
    }
</script>