
문은 자바스크립트의 문장이나 명령어라고 할 수 있다.
주요 키워드
할당이나 함수호출처럼 부수 효과가 있는 표현식은 그 자체로 문이 될 수 있다.
greeting = "Hello" + name;
i *= 3;
counter++;
delete o.x;
console.log(debugMessage);
displaySpinner(); // 웹 앱에서 스피너를 표시하는 가상의 함수
❗모두 세미콜론으로 종료 했다❗
🔔규칙
{
x = Math.PI;
cx = Math.cos(x);
console.log("con(π) = " + cx);
}
- 문 블록을 사용하면 허용되는 하위 문 하나에 문 여러 개를 넣을 수 있다.
- 복합문은 자바스크립트가 문 하나를 예상하는 곳에 문 여러 개를 넣을 때 사용한다.
// 배열 a를 초기화합니다.
for(let i = 0; i < a.length; a[i++] = 0;
- 의도적으로 비운 것이라면 세미콜론(;)을 붙이지 말고, 주석을 달자.
// 개발자의 의도와 다르게 실행된 예제
if ((a === 0) || (b === 0)); // 아무 일도 하지 않는 행
o = null; // 조건과 상관없이 항상 실행되는 행
// 개발자의 의도대로 실행된 예제
for(let i = 0; i < a.length; a[i++] = 0; /* 의도적으로 비움. */
분기점(branch)에 따라 인터프리터가 문을 실행하기도 하고, 실행하지 않기도 한다.
- 자바스크립트가 조건에 따라 문을 실행할 수 있게 하는 기본적인 제어문
1. 표현식(expression) 평가 : 결과값이 true일 때
if (expression)
statement
if (!address) {
address = "";
message = "Please specify a mailing address.";
}
if (expression)
statement1
else
statement2
if (i === j) {
if (j === k) {
console.og("i equals k");
}
} else { //중괄호의 위치로 결과가 달라진다.
console.log("i doesnt't equal j");
}
- 선택지가 여러개일 때 사용되는 관용적 표현(자바스크립트 문은 아님.)
if ( n === 1){
// 코드 블록 #1을 실행합니다.
} else if (n === 2) {
// 코드 블록 #2을 실행합니다.
} else if (n === 3) {
// 코드 블록 #3을 실행합니다.
} else {
// 전부 실패하면 블록 #4을 실행합니다.
}
- 모든 분기점이 같은 같은 표현식의 값에 사용될 때 유용하다.
- switch 문이 실행되면 먼저 expression의 값을 계산 후, case 라벨의 표현식과 같은 것을 순차적으로 찾아낸다.
switch(n) {
case 1:
// 코드 블록 #1을 실행합니다.
break; // 다음 case로 넘어가지 않음.
case 2:
// 코드 블록 #2을 실행합니다.
break;
case 3:
// 코드 블록 #3을 실행합니다.
break;
default: // default 라벨이 없으면 case 문은 종료된다.
// 코드 블록 #4을 실행합니다.
break;
}
🔔switch 문 평가 방법
- 경로를 자기 자신 쪽으로 구부린 코드 일부를 반복하는 문이며 루프라고 하기도 한다.
- 루프는 모두 배열 요소를 순회할 때 쓸 수 있다.
- 자바스크립의 기본 루프
while (expression)
ststement
🔔while 문 평가 방법
- 루프 맨 위가 아니라 맨 아래에서 평가된다.
do
statement
while (expression);
✅do/while과 while 차이
- 루프를 단순화 한다.
- 초기화, 테스트, 업데이트를 표현식 하나로 묶고, 이들을 루프 문법에 명시적으로 표현한다.
//for 문은 while 문으로 변경할 수 있다.
for(initialize; test; increment)
statement
// 같은 실행을 하는 while 문
initialize;
while(test) {
staement
increment;
}
- initialize, test, increment은 생략 가능하지만, 세미콜론(;)은 필수이다.
// for 문 무한루프
for(;;)
// while 문 무한루프
while(true)
- ES6에서 정의한 새 반복문.
- 이터러블(iterable) 객체에서 동작한다. (배열, 문자열, 세트, 맵은 이터러블)
for 키워드 + 루프가 하는 일을 괄호로 묶어서 표현 of 키워드 + 이터러블 객체로 평가되는 표현식// for/of를 써서 숫자 배열을 순회하며 합을 구하는 예제
let data = [1, 2, 3, 4, 5, 6, 7, 8, 9], sum = 0;
for(let element of data) {
sum += element;
}
sum // => 45
- 배열은 동적으로 순회한다.
- 일반 객체(객체는 기본적으로 이터러블이 아님)에 for/of를 사용하려 하면 런타임에 TypeError가 일어난다.
let o ={ x: 1, y:2, z: 3};
let keys = "";
for(let k of Object.keys(o)) {
keys += k;
}
keys // => "xyz"
Object.key()for/of를 사용할 수 있는 이터러블let sum = 0;
for(let v of Object.values(o)) {
sum += v;
}
sum // => 6
Object.entries()Object.entries()와 분해 할당을 통해 for/of를 사용할 수 있다.let paris = "";
for (let [k, v] of Object.entries(o)) {
paris += k + v;
}
paris // => "x1y2z3"