JavaScript 기초 - 함수

jeongjwon·2023년 2월 21일
0

SEB FE

목록 보기
7/56

do~ while문

while문과는 다르게 내부 코드가 최소 한 번은 출력이 된다.

let num = 2;
do{
  console.log(`${num} => 내부의 코드가 출력`);
  **num--;**
}while(num>0)
2 => 내부의 코드가 출력
1 => 내부의 코드가 출력
let num = 2;
do{
  console.log(`${num} => 내부의 코드가 출력`);
}while(**num--**>0)
2 => 내부의 코드가 출력
1 => 내부의 코드가 출력
0 => 내부의 코드가 출력

do while문을 잘 쓰지 않았던 터라 잘 몰랐는데 어떤 경우에 while문 대신 쓰는지 이게 또 궁금하게 된다.

그리고 후치연산자(num--)를 do 중괄호 안, while 조건문 안에 위치시키는 것으로 결과에 차이가 있는 것을 발견하였다. 여기서 드는 의문점은 조건을 비교할 때 위에서 아래로 do 안의 명령문들을 먼저 실행한 다음에 while 조건문에서 조건을 비교하는 건지 , 아님 while 조건문에서 조건 비교를 먼저하고 do 로 실행이 넘어가는 건지 헷갈린다. 이 부분은 다음에 질문해야겠다!

후치연산자 전치연산자

for 문 (+for...in , for...of)

for([초기문] ; [조건문]; [증감문]){}
for(variable in object){} 객체 열거 속성
for(variable of object){} 배열, Map, Set, 인수 객체

📍 for ... in 과 for ... of 의 차이

쉽게 말하자면 for in 은 객체 순환이고 for of 는 배열 순환이라고 하는데, 배열도 객체이지 않은가?

var obj = { a:1, b:2, c:3 };
for(var item in obj){
  console.log(item); // a b c
}
for(var item of obj){
  console.log(item); //Uncaught TypeError: obj is not iterable obj는 반복되는 값이 아니다.
}

var arr = [1,2,3];
for(var item of arr){
  console.log(item); // 1 2 3
}
for(var item in arr){
  console.log(item); // 0 1 2 => index 값이 반환
}

차이점을 본다면 for ... in 문은 열거할 수 있는 속성들을 순회가능하다. 즉, 모든 객체에 적용가능하다. 객체의 keys 값은 접근 가능하나, values 값에는 직접 접근 불가하다. 배열에도 적용되는 것 또한 index값이 접근 가능하기 때문이다.
다만, for ... of 는 반복가능한 객체(iterable)만 순회할 수 있도록 한다. 따라서 모든 객체에는 접근 불가하며, 객체 안의 Map, Set, Array, arguments 에만 해당가능하다. 따라서 for ... in 보다는 for ... of 를 사용하는 것이 더 효율적이고 편하다.



함수

  1. 함수선언문
function decalred(){
  console.log('함수선언문');
}//function으로 함수를 선언
decalred(); //-> 함수선언문
  1. 함수표현식
let expression = function(){
  console.log('함수표현식');
}//변수에 함수를 할당
expression(); //-> 함수표현식
  1. 함수의 매개변수와 전달인자
    3-1. 전달인수 수가 매개변수수보다 적게 전달될 경우
    function getUserName(name1, name2){
      	console.log(`${name1}${name2}이 만났습니다.`);
    }
    getUserName('kimcoding');  
    kimcoding과 undefined이 만났습니다. 
    //오류 X, 전달되지 않은 인수는 undefined로 출력
    3-2. 전달인수 수가 매개변수 수보다 많게 전달될 경우
    function getUserName(name){
    	console.log(name);
    }
    getUserName('kimcoding', 'parkhacker'); 
    kimcoding 
    // 오류 X, 필요없는 전달인수는 굳이 출력하지 않고 필요한 전달인수만 매개변수로 전달되어 출력

0개의 댓글