Javascript Statement

Statement란? 단어뜻: [성명, 진술, 서술]


1. Expression Statement (표현문)

자바스크립트에서의 문장끝에 오는 ;(세미콜론[할당문])

2. Block Statement (복합문)

흔히 블록({})이라 불리는 이 복합문은 표현문의 집합입니다.
(이 블록은 하나의 문장처럼
사용되기 때문에 이 또한 문장입니다.)



  1. {
  2.     표현문;
  3. };
  4.  
  5.  
  6. {
  7.     var i = 0;
  8.     alert(i); // 0
  9.  
  10.     {
  11.         var i = 1;
  12.         alert(i);   // 1
  13.     }
  14.  
  15.     alert(i); // 1
  16. };


1.
바깥쪽 블록의 전역변수 i가 선언되고 안쪽 블록의 전역변수 i가 선언된다.


2. 바깥쪽 블록의 전역변수 i에 0이 정의되고 안쪽 블록의 전역변수 i에 1이 정의된다.

3. 안쪽 블록의 alert(i)는 1되고 바깥쪽 블록의 alert(i)도 1 된다.


  1. var i = 2;
  2. (function()
  3. {
  4.     alert(i); // undefined
  5.    
  6.     var i = 2; // 2
  7.     alert(i);
  8.  
  9.     if (true)
  10.     {
  11.         var i = 3;
  12.     }
  13.  
  14.     alert(i); // 3
  15.  
  16. })();


1. 전역변수 i가 선언되고 2가 정의된다.

2. 최초 alert(i)의 반환값이 "undefined" 가 나오는 이유는 "자바스크립트"의 유효범위는 Function 내부에서만 존재 하기 때문이며, 즉, 함수 내부 아래 지역변수로 i가 선언 되었기 때문입니다.

3. if문 내부에서 지역변수 i가 선언되고 3이 정의된다.

4. 마지막 alert(i)의 반환값이 "3"이 나오는 이유는 앞서 말했듯이 "자바스크립트"의
유효범위는 Function 내부에서만 존재 하기 때문입니다.



3. if, else, else if (조건문)


  1. if (true) {
  2. }
  3. else if (false) {
  4. }
  5. else{
  6. }
 

모든 if문 즉 조건문은 타 언어와 별반 다르지 않아 넘어간다.
  
  1. var is = true;
  2. switch (is){  
  3. case true :    
  4.     alert(true);      
  5.     break;
  6. case false :
  7.     alert(true);      
  8.     break;
  9. default :
  10.     alert(true);  
  11.     break;
  12. }


자바스크립트에서의 switch 비교문이 타 언어와 다른점은 비교값으로 정수 리터럴뿐만
아니라 모든 문자열이올수 있다.




4.
while, do while



  1. var sum = 0;
  2. while ( sum < 100 ) {  
  3.     sum = sum + 1;
  4. }
  5.  
  6. alert(sum); // 100
  7.  
  8.  
  9. var sum = 0;
  10. do {  
  11.     sum = sum + 1;
  12. } while ( sum < 100 );
  13.  
  14. alert(sum); // 100


5. for, for in



  1. var length = 10;
  2. for (var i = length; i--;){
  3.     alert(i); // 9 8 7 6 5 4 3 2 1 0
  4. }
  5.  
  6. var arr = [1];
  7. for (var n in arr) {
  8.     alert(arr[n]); // 1  
  9. }
  10.  
  11.  
  12. for (var n in document.body.childNodes){
  13.     alert(n); // lenght 0
  14. }

label, break, continue


break :


  1. for (i = 0; i < 10; i++) {
  2.     // i의 값이 5가 되면 순환문을 빠져나간다.
  3.     if (i === 5) break;
  4. }


continue :


  1. for (i = 0; i < 10; ++i) {
  2.     // i가 2와 같다면 continue문을 만나 아래 표현식을 생략하고 다음 i부터 순회를 시작 합니다.
  3.     if (i == 2) continue;  
  4.     alert(i);
  5. }

label :


  1. outter:
  2. for (i = 0; i < 10; i++) {
  3.     inner:
  4.     for (k = 0; k < 10; k++){
  5.         if (k === 5) break outter;
  6.  
  7.         alert(i);
  8.     }
  9. }
1. 바깥쪽에 for문에 outter label를 배치하고 안쪽 for문에 inner label을 배치한다.

2. 안쪽 for문의 조건문 if 조건식이 true라면 바깥쪽 for문 label인 outter for문의 순회를 종료시킨다.

3. alert(i)는 0이 다섯번 찍히고 종료한다.