본문 바로가기

항해99_10기/105일의 TIL & WIL

[20221110] 배열, for문 조건 속 논리 연산자

오늘 배운 것

  • array methods - splice(), filter()
    • splice() : 특정 인덱스에 위치한 요소의 값을 삭제/추가 하는 메소드 -> 한번에 한개의 요소만 처리
    • filter() : to delete all the element that has the same property ( array.filter((item) => itme !=="property")
  • 자료의 비파괴와 파괴
    • 파괴적 처리 : 메모리 절약을 위해 자료 원본 자체에 변형을 일으키는 것
    • 비파괴적 처리 : 원본 내용이 변경되지 않고 처리되는 것
  • for in / for of 두가지 반복문에 대한 차이
    • for in의 경우, 객체의 모든 열거 가능한 속성에 대해 반복 => 반복 변수(for(const 반복변수 of 배열/객체)에 인덱스/키 값이 들어감 => 요소값을 출력하기 위해서는 arr[반복변수]로 직접 찍어줘야 함
    • for of의 경우, [Symbol.iterator] 속성을 가지는 컬렉션 전용 => 반복 변수(for(const 반복변수 of 배열/객체)에 요소의 값이 들어감
var obj = {
  a: 1,
  b: 2,
  c: 3
};

for (var item in obj) {
  console.log(item) // a, b, c
}


var obj = {
  a: 1,
  b: 2,
  c: 3
};

for (var item of obj) {
  console.log(item) // Uncaught TypeError: obj is not iterable
}
  • for문에서 논리연산자 사용
    • for (let i =0; i < arr.length; i++)와 같이 늘상 사용하는 for문의 조건 부분에 for(let i=0; i <arr.length && arr[i] >0; i++)와 같은 식으로 논리연산자를 추가할 수 있음

 

오늘 느낀 점

  • 반복문에서 continue와 break를 사용하는 방법을 복습하면서 그동안 잘 정리되지 않았던 부분을 정리할 수 있었음
  • for문 조건에 논리연산자를 추가하여 사용할 수 있다는 점을 배울 수 있어서 좋았음
  • 중첩반복문을 사용하여 피라미드 출력하기는 조금 어려웠지만 혼자 풀어냈고, 재미있었음

 

오늘 궁금한 것

크롬 브라우저 개발자 도구 > sources > snippet에서 간단한 프로그램을 자주 하는데, 오늘 이런 에러를 만났다.

const size = 5;

for (let i =0; i < size; i++){
  console.log(i)
}

//Uncaught SyntaxError: Identifier 'size' has already been declared

size의 값을 상수로 지정하고 for 문의 조건에서 사용해주었는데, 해당 식별자가 이미 선언되었다는 에러가 뜨는 것이다??

그래서 같은 코드를 VS code에서 node.js를 통해 실행해봤는데, 문제 없이 잘 돌아간다.

다시 크롬 개발자도구로 돌아와서, 문제의 size변수를 const에서 let으로 바꾸니까 잘 돌아간다...?ㅋㅋㅋ

왜지??? 

=> 브라우저를 새로고침하고 오니 잘 돌아감..ㅋㅋㅋ

기존에 size 변수가 이미 선언된 상태에서 다시 코드를 다시 실행(재선언)해서 안되는 거였음...