자바스크립트 완벽가이드 5장에 해당하는 부분이고, 읽으면서 자바스크립트에 대해 새롭게 알게된 부분만 정리한 내용입니다.
4장에 나온 표현식은 '평가'를 통해 값으로 바뀌지만, 문은 '실행'을 통해 어떤 동작을 수행한다.
조건문의 다음 코드를 보자.
i = j = 1;
k = 2;
if (i === j)
if (j === k) console.log('i equals k');
else console.log("i doesn't equal j");
조건문을 사용할 때, 명확하게 의도를 전달하고 싶다면 아래와 같이 중괄호를 써주자.
→ 가독성 측면에서 중괄호를 쓰는게 맞는거 같다.
i = j = 1;
k = 2;
if (i === j) {
if (j === k) {
console.log('i equals k');
} else {
console.log("i doesn't equal j");
}
}
일반적으로 switch문 안에서는 break
키워드를 사용하여 문을 끝내지만 함수 안의 switch 문이라면 break
문 대신 return
문을 써도 된다.
이터러블 객체에서 동작하며, 반복문을 수행할 때 '동적으로' 순회하기 때문에 배열 자체에 변화가 생긴다면 예상치 못한 결과를 초래할 수 있다.
즉 대상 배열의 값이 계속해서 추가되는 경우, 무한루프가 발생할 수 있음
for/await를 사용한 비동기 순회를 다음과 같이 할 수 있다.
const printStream = async stream => {
for await (const chunk of stream) {
console.log(chunk);
}
};
거의 사용해본적 없는 문법인데.. 처음봤다.
어떤 문이든 그 앞에 식별자와 콜론을 붙여서 라벨을 만들 수 있다.
identifier: statemnet
코드 예시
mainloop: while(token !== null) {
continue mainloop; // 이 루프의 다음 반복으로 건너뜀
break mainloop; // 해당 라벨이 붙은 문을 종료
}
라벨의 네임 스페이스는 변수나 함수의 네임스페이스와 달라 같은 식별자를 사용할 수 있다.
with문은 지정된 객체의 프로퍼티가 해당 블록의 스코프 안에 있는 변수인 것처럼 코드 블록을 진행한다.
with (document.forms[0]) {
// 폼 요소에 직접 접근
name.value = '';
address.value = '';
email.value = '';
}
그러나
with
문은 코드를 최적화하기 어렵고 상당히 느리게 동작하기에 사용하지 않는다.
따라서with
문을 없애기 위해 다음과 같이 고쳐쓸 수 있다.
const f = document.forms[0];
f.name.value = '';
f.address.value = '';
f.email.value = '';