1. 문장, 화이트 스페이스, 세미콜론 자동 삽입, 블록
문장
•
형태: ; (세미콜론)
•
문장을 끝나게 하는 역할
var book = "책";
JavaScript
복사
화이트 스페이스
•
white space
•
사람의 눈에 보이지 않는 문자(스페이스바, 탭, 엔터 등)
◦
가독성을 위한 것
◦
문자마다 기능을 가지고 있습니다.
세미콜론 자동 삽입
•
세미콜론 (;)은 문장 끝에 작성
•
세모콜론을 삽입하여 자동으로 문장이 끝나게 합니다.
•
JS엔진이 분석 및 삽입(ES5부터 지원)
var one = 1 //세미콜론을 작성하지 않아도 화이트 스페이스(LF/CR)앞에 삽입합니다.
var two = 2;
console.log(one);// 1
JavaScript
복사
블록
•
형태: {문장 리스트 opt}
•
중괄호 { }
◦
실행 그룹으로 블록안의 모든 문장 실행
•
문장 리스트
◦
{ } 안의 모든 문장
◦
문장 리스트 작성은 선택(option)
var one = 1, two = 1;
if(one === two){
var result = one + two;
console.log(result);//2
}
JavaScript
복사
2. if, debugger
if
•
형태
◦
if(표현식) 문장 1
◦
if(표현식) 문장1 else 문장2
•
조건에 따른 처리
◦
먼저 표현식을 평가
◦
평가 결과를 true/false로 변환
▪
true이면 문장1 실행
▪
false이면 문장2 실행
var a = 1, b = 1;
if( a === b) console.log("블록을 사용하지 않음");
//블록 미사용
if(a === b)
console.log("1번 줄")
console.log("2번 줄");
//블록 사용
if(a === b){
console.log("블록 사용");
}
//if(표현식) 문장1 else 문장2 - 블록 미사용
if(a === b)
console.log("블록 미사용, true");
else
console.log("블록 미사용, else");
//if(표현식) 문장1 else 문장2 - 블록 사용
if(a === b){
console.log("블록 사용, true");
} else {
console.log("블록 사용, else");
}
JavaScript
복사
debugger
•
debugger 위치에서 실행 멈춤
◦
브라우저의 개발자 도구 창이 열려 있을 때만 멈춥니다.
◦
열려있지 않으면 멈추지 않음
◦
ES5부터 지원합니다.
var sports = "스포츠";
debugger
console.log(sports);
JavaScript
복사
3. while, do-while
while
•
형태: while(표현식) 문장
•
표현식의 평가 결과가 false가 될 때까지 문장을 반복하여 실행 하며 반복이 종료되는 조건이 필요합니다.
var k = 1;
while(k < 3){
console.log(k);
k++;
};
//1
//2
JavaScript
복사
⇒ 처음 표현식을 평가할 때 k는 1이기에 k < 3은 true이고 안의 블록안의 문장들이 수행됩니다. k가 콘솔창에 출력 후 k를 후치증가합니다.
⇒ 두 번째 표현식 평가에서 k는 후치증가하여 2가 되었지만 2 < 3은 아직 true이기에 블록안의 문장리스트가 다시 수행됩니다.
⇒ 세 번째 표현식 평가에서 k는 3이며 3 < 3은 false이기에 멈추게 됩니다.
do-while
•
형태: do 문장 while(표현식)
•
처리 방법은 while문과 같지만, while문의 표현식을 평가하고 문장리스트를 수행하기전 do의 블록안의 문장리스트를 우선 실행합니다.
그리고 while의 표현식이 true가 되면 while문 블록내의 문장리스트를 수행 후 종료합니다.
var k = 0;
do{
console.log("do:", k);
k++;
} while(k < 3){
console.log("while:", k);
}
JavaScript
복사
4. for, [코딩 시간]
•
형태: for(초깃값opt; 비교opt; 증감opt) 문장
•
2 번째의 비교 표현식의 평가 결과가 false가 될 때까지 문장을 반복 실행
for(var i = 0; i < 3; i++){
console.log(i);
};
JavaScript
복사
◦
var i = 0
⇒ i의 초기값을 0으로 할당하며 처음 한 번만 할당합니다.
◦
k < 3
⇒ 비교 표현식을 평가하여 평가 결과가 false가 될 때까지 블록의 문장리스트를 수행합니다.
◦
k ++
⇒ for문의 블록내부 문장리스트가 수행된 후 i의 증감이 이뤄집니다. 위 코드에서는 k를 후치증가로 1증가시킵니다.
◦
다시 비교 표현식부터 진행합니다.
for() 옵션
•
형태: for(초기값opt; 비교opt; 증감opt)문장
•
형태에서 opt는 생략 가능
◦
증감 생략
◦
초기값과 증감 생략
◦
비교와 증감 생략
◦
모두 생략
//증감 생략
for(var k = 0; k < 3;){
console.log(k);
k++; //변수 증감을 문장리스트내에서 수행
};
//초기값과 증감 생략
var k = 0;
for(; k < 3;){ //초기값을 선언하지 않더라도 세미콜론;은 선언해줘야 합니다.
console.log(k);
k++;
};
//비교와 증감 생략
for(var k = 0; ; ){ //비교의 default는 true입니다.
console.log(k);
k++;
if(k > 2){
//for()문 종료
break;
};
};
//모두 생략
var k = 0;
for(;;){
console.log(k);
if( k === 2){
//for문 종료
break;
};
k++;
};
JavaScript
복사
실습 문제
Q. for()문을 사용하여 1~50까지 반복하며 홀수 번째 값과 짝수 번째 값을 누적하고 반복한 값을 누적합니다. 반복이 완료되면 누적한 홀수 번째 값과 누적한 짝수 번째 값을 출력합니다. 누적한 전체 값을 출력합니다.
5. break, continue
break
•
형태
◦
break;
◦
break 식별자
•
반복문 종료
•
for, for-in, while, do-while, switch에서 사용됩니다.
var k = 0, m = 0;
while (k < 3){
m++;
if(m === 2){
break;
};
console.log(m);
};
//실행결과
1
JavaScript
복사
continue
•
형태
◦
continue;
◦
continue 식별자
•
반복문의 처음으로 분기
•
for, for-in, while, do-while에서 사용됩니다.
for(var i = 0; i< 3; i++){
if(i == 2){
continue;
};
console.log(i);
};
//실행결과
//1
//3
JavaScript
복사
6. switch
•
형태
◦
switch(표현식){
case 표현식: 문장 리스트 opt
default: 문장 리스트 opt
};
◦
switch 표현식의 평가 값과 일치하는 case문 수행
var exp = 1;
switch(exp){
case 1:
console.log(100);
case 2:
console.log(200);
};
//실행결과
//100
//200
JavaScript
복사
⇒case 1 에 해당되어 100이 출력되었지만, 아래의 문장이 있으면 또 수행되기 때문에 case 2도 수행되어 200도 출력됩니다. 이것을 막기 위해 break를 사용합니다.
◦
break 사용
var exp = 1;
switch(exp){
case 1:
console.log(100);
break;
case 2:
console.log(200);
};
//실행결과
//100
JavaScript
복사
◦
일치하는 case가 없으면 default 수행
var exp = 7, value;
switch(exp){
case 1:
value = 100;
break;
default:
value = 700;
break;
case 2:
value = 200;
};
console.log(value);// 700
JavaScript
복사
⇒ break
◦
OR(||) 형태
var exp = 3;
switch(exp){
case 2:
case 3:
console.log(100);
};
JavaScript
복사
▪
exp가 2 또는 3이여도 둘 다 100이 출력됩니다.
7. try-catch, throw
try-catch
•
형태
◦
try 블록 catch(식별자) 블록
◦
try 블록 finally 블록
◦
try 블록 catch(식별자) 블록 finally 블록
•
try 문에서 예외 발생을 인식
•
예외가 발생하면 catch블록 실행
•
finally블록은 예외 발생과 관계없이 실행
var value;
try{
value = ball;
} catch(error){
console.log("에러 발생");
} finally {
console.log("무조건 실행");
}
//에러 발생
//무조건 발생
JavaScript
복사
⇒ try 블록 내부 문장 리스트를 수행하는데 ball이라는 변수가 없기에 에러가 발생합니다 error는 JS의 Error 오브젝트로 설정됩니다. 그리고 finally 블록내 문장 리스트는 catch여부와 상관없이 수행됩니다.
실무에서는 주로 DB와의 Connection이 에러가 발생하더라도 closing해줘야하기때문에 finally로 사용합니다.
throw
•
형태: throw 표현식
•
명시적으로 예외를 발생시킵니다.
•
예외가 발생하면 catch 실행
try{
throw "예외 발생시킴";
var sports = "스포츠";
} catch(error){
console.log(error);
console.log(sprots);
}
//실행결과
//예외 발생시킴
//undefined
//예외를 Object type으로 발생시킴
try{
throw {msg: "예외발생", bigo:"존재하지 않는 값"};
} catch(error){
console.log(error.msg);
console.log(error.bigo);
};
//실행결과
//예외발생
//존재하지 않는 값
JavaScript
복사
8. strict 모드
•
형태: "use strict"
•
엄격하게 JS 문법 사용의 선언
•
작성한 위치부터 적용됩니다.
•
ES5부터 지원됩니다.
//변수의 타입(var, let, const)이 작성되지 않은 형태
book = "책";
console.log(book);//책
"use strict"
try{
book = "변수 선언하지 않음";
console.log(book);
} catch(error){
console.log(error.message);
}
JavaScript
복사