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(variable in object){}
객체 열거 속성
for(variable of object){}
배열, Map, Set, 인수 객체
쉽게 말하자면 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 를 사용하는 것이 더 효율적이고 편하다.
function decalred(){
console.log('함수선언문');
}//function으로 함수를 선언
decalred(); //-> 함수선언문
let expression = function(){
console.log('함수표현식');
}//변수에 함수를 할당
expression(); //-> 함수표현식
3-2. 전달인수 수가 매개변수 수보다 많게 전달될 경우function getUserName(name1, name2){ console.log(`${name1}과 ${name2}이 만났습니다.`); } getUserName('kimcoding');
kimcoding과 undefined이 만났습니다. //오류 X, 전달되지 않은 인수는 undefined로 출력
function getUserName(name){ console.log(name); } getUserName('kimcoding', 'parkhacker');
kimcoding // 오류 X, 필요없는 전달인수는 굳이 출력하지 않고 필요한 전달인수만 매개변수로 전달되어 출력