20231229

귤금·2023년 12월 29일

Node.js 4기 TIL

목록 보기
2/86

Today?

JavaScript 문법 종합반 1주차

Runtime :
프로그램이 실행되는 동안의 시점

Q. 변수 정의의 차이

var
같은 이름의 변수를 여러 번 선언해도 오류가 발생하지 않고, 가장 마지막에 선언한 값으로 변수가 덮어씌워짐.
let
같은 이름의 변수를 두 번 선언하면 오류가 발생.
const
같은 이름의 변수를 두 번 선언하면 오류가 발생. 선언 후에 값을 변경할 수 없는 상수를 선언할 때 사용.

var의 단점
변수 중복 선언 가능하여, 예기치 못한 값을 반환할 수 있다.
함수 레벨 스코프로 인해 함수 외부에서 선언한 변수는 모두 전역 변수로 된다.
변수 선언문 이전에 변수를 참조하면 언제나 undefined를 반환한다.

-> let과 const 키워드는 위의 세 가지 문제점을 해결했다.

Q. 이 변수 선언법은 왜 다르게 사용할까? 어느 경우에?

기본적으로 변수의 스코프는 최대한 좁게 만드는 것을 권장한다. 따라서, var 키워드 보다는 let과 const 키워드를 사용하며, 변경하지 않는 값(상수)이라면 let 보다는 const 키워드를 사용하는 것이 안전하다.

오늘 배운 것

개인 과제를 위해 JS로 카드를 생성하는 작업을 했다. 처음에는 getElementById를 써서 element 객체를 잘 반환받고 카드가 문제 없이 생성되는 걸 확인했다.
나중에 이를 getElementsByClassName으로 바꾸니 appendChild를 할 수 없다고 오류가 발생했다...
-> getElementById는 element 객체를 반환, getElementsByClassName은 컬렉션 객체를 반환하기 때문에 생기는 오류. 이는 동일 id값은 문서 내에 존재할 수 없지만 class값은 존재할 수 있기 때문에 나타나는 현상으로...

cardWrap[0].appendChild(cardBox);

-> getElementById로 수정할까 하다가, 그 대신 getElementsByClassName에서 반환받은 컬렉션의 0번째 항목을 가져온다고 지정해주니 해결되었다.

0개의 댓글