Home > JavaScripFile |
---|
TITLE 자바스크립트 완벽가이드 6장 문장 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
작성자 | 김대근 | 날짜 2013.01.24 | 조회수 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6장. 문장
□문장 - 완결된 명령. - 문장들 사이의 구분은 세미콜론으로 이루어진다.
□표현문(expression statements) ■ 특징 - 부수 효과가 있는 표현식. ■ 할당문 - 할당이 일어난 표현식.
■ 함수 호출 - 함수 호출은 표현식이기도 하지만 동시에 문장이기도 하다.
□복합문 ■ 특징 - 표현식이 다른 표현식을 포함. - 각각의 복합문은 하나의 하위문(substatement)을 포함할 수 있다. - 다수의 문장을 큰 문장 블록으로 합친다.
- 문장 블록을 사용하면 문법에 명시된 하나의 하위문 안에 많은 문장을 넣을 수 있다. ■ 실행 방법 - 자바스크립트 인터프리터가 해당 복합문을 구성하는 문장들을 쓰인 순서대로 하나씩 차례로 실행. ■ 실행이 중단되는 경우 - 복합문 안에 break, continue, return, throw 같은 문장을 만나 실행 중단. - 복합문 안에서 에러 발생. - 복합문에서 호출한 함수가 그 안에서 발생한 에러를 처리하지 않거나 직접 예외를 발생시키는 경우.
□ if ■ 특징 - 조건부로 문장을 실행할 수 있는 기능을 제공하는 제어문. ■ if
- ‘표현식’을 평가한 값이 true이거나 true로 변환할 수 있으면 ‘문장’을 수행. - ‘표현식’을 평가한 값이 false이거나 false로 변환할 수 있으면 ‘문장’을 수행하지 않는다.
■ else - 표현식이 false일 때 실행되는 문장.
- ‘표현식’을 평가한 값이 true이거나 true로 변환될 수 있을 경우 ‘문장1’ 수행. - ‘표현식’을 평가한 값이 false이거나 false로 변환될 수 있을 경우 ‘문장2’ 수행.
- else절은 가장 가까운 if문에 속하므로 중첩된 if문을 사용할 경우 주의해야 한다.
□ else if - 여러 개 중 하나의 코드를 실행할 때 사용.
□ switch ■ 특징 - 모든 분기가 단 하나의 변수 값에 의해 결정될 경우 if문보다 효율적으로 사용.
- 코드 블록의 여러 위치에 case, default 레이블을 붙인다. ■ 실행 - switch 문이 실행되면 표현식의 값을 계산하고 이 값에 대응하는 case 레이블을 찾을 때 해당 case 레이블 직후에 나오는 문장 수행. - 대응되는 case 레이블이 없을 경우 default 레이블 직후에 나오는 문장 수행. - case문을 판별하는 데에는 동등 연산자(==)가 아닌 일치 연산자(===)가 사용된다. - default 레이블이 없을 경우 모든 코드 블록을 건너뛴다.
- case문은 실행하려는 코드가 수행되는 지점을 지정만 한다. (중지할 경우 break, return문 사용.)
□ while - 반복적인 행동을 수행.
- ‘표현식’을 평가한 값이 true일 경우while 루프의 몸체을 형성하는 ‘문장’이 실행된 후 ‘표현식’을 평가한 값이 false가 될 때까지 반복 수행. - ‘표현식’을 평가한 값이 false일 경우 프로그램의 다음 문장을 수행. - while(true)구문을 사용하여 무한 루프를 만들 수 있다.
□ do/while - while문과 비슷하지만 루프가 최소한 한 번 이상 수행되어야 할 경우에 사용.
- do 키워드 다음에 오는 ‘문장’을 수행 후 while 키워드의‘표현식’을 평가한 값이true일 경우 do 키워드의 ‘문장’을 수행. - while 키워드의 ‘표현식’을 평가한 값이 false일 경우 프로그램 다음 문장을 수행.
□ for - while문보다 좀 더 편리한 루프. - 초기화, 테스트, 갱신에 대한 부분이 루프 문법 내부에 명시적으로 나타나 있다.
- 초기화 : 루프가 시작하기 전에 카운터 변수 초기화. - 테스트 : 매회 반복이 일어나기 직전에 평가되어 루프의 몸체를 실행할지 여부를 제어. - 증가 : 루프 몸체 끝에서 테스트 부분을 수행하기 직전에 카운터 변수를 증가하거나 갱신.
□ for/in - 객체의 모든 프로퍼티에 대한 루프.
- 변수 : 변수 이름, 변수/배열 객체/객체 프로퍼티를 선언하는 var문. - 객체 : 객체 이름 또는 객체로 평가될 수 있는 표현식. - for/in 루프의 몸체는 객체의 각 프로퍼티마다 한 번씩 실행. 몸체가 실행되기 전에 객체에 속한 프로퍼티들 중 하나의 이름이 변수에 문자열 형태로 할당.
- 객체 프로퍼티들이 변수에 할당되는 순서는 정해져 있지 않다. (자바스크립트 구현이나 버전에 따라 순서가 달라질 수 있다.) - 몇몇 프로퍼티들은 열거 불가로 지정되어 있어 for/in문으로 열거되지 않는다. (열거 불가 프로퍼티 : 내장 프로퍼티, 내장 메서드) - 상속된 사용자 정의 프로퍼티는 열거 가능. - for/in 루프의 변수에 임의의 표현식 사용 가능.
- 배열 인덱스도 하나씩 열거 가능.
□레이블 - 어떤 문장에라도 그 앞에 식별자 이름과 콜론을 삽입함으로써 레이블을 붙일 수 있다.
- switch문에서 사용되는 case와 default: 레이블은 특별한 레이블 문이다. - 레이블 이름은 변수나 함수 이름과는 별개로 취급되기 때문에 변수나 함수 이름과 같아도 충돌되지는 않는다. - 어떤 문장에 레이블을 붙이면 프로그램의 다른 곳에서 그 문장을 참조할 수 있는 이름이 생긴다.
- 어떤 문장에라도 레이블을 붙일 수 있지만 보통 루프문에 사용된다.
□ break ■ 문법
■ 특징 - break 문을 감싸고 있던 가장 안쪽의 루프나switch문에서 즉시 빠져 나온다. - 루프나 switch문 내부에서만 적법하다.
■ 레이블과 함께 사용 - break 키워드 뒤에 레이블 이름이 따라올 수도 있다.
- 레이블 이름에는 콜론 없이 오직 식별자만 쓴다. - 레이블은 문장들의 블록을 지칭하는 이름이어야 한다. - 해당 레이블 이름이 붙은 문장을 종료. * 레이블이 붙은 문장 - 어떤 형태로든 다른 문장들을 둘러싸고 있는 문장. - 레이블이 붙은 문장은 굳이 루프나 switch문이 아니어도 상관 없으며, 레이블과 함께 쓰인 break문이 루프나 switch문 에 포함되지 않아도 상관없다. - break키워드와 레이블 이름 사이에선 줄바꿈이 허용되지 않는다.
□ continue ■ 문법
■ 특징 - break문과 유사하지만 루프를 빠져 나오지 않고 새로운 반복을 수행한다. - while, do/while, for, for/in 루프의 몸체 내부에서 사용.(이 외의 영역에서 사용할 경우 문법 에러 발생.) ■ 레이블과 함께 사용 - continue 키워드 뒤에 레이블 이름이 따라올 수 있다.
- continue 키워드와 레이블 이름 사이에 줄바꿈을 허용하지 않는다. ■ 루프문에서의 실행 - while : 루프의 시작 부분에 지정된 ‘표현식’을 다시 테스트. 결과가 true이면 루프 몸체 처음부터 다시 실행. - do/while : 일단 루프의 끝부분까지 건너뛴다. 그리고 루프 조건을 다시 테스트하여 결과가 true이면 루프 몸체 처음 부터 다시 실행. - for : 증가 표현식을 평가한 후 테스트 표현식을 테스트하여 다음 반복을 수행하지 여부를 판단. - for/in : 다음 차례의 프로퍼티 이름을 루프 시작에서 지정된 변수에 할당한 후 루프를 다시 수행.
□ var ■ 정의 - 명시적으로 하나 또는 그 이상의 변수를 선언. ■ 문법
■ 특징 - 선언될 변수들이 쉼표로 구분. - 변수 선언 시 초기값을 지정할 수도 있다.
- var문에 의해 생성되는 프로퍼티는 delete 연산자로 삭제될 수 없다. - 초기값을 지정하지 않으면 초기값은undefined. - for, for/in 의 일부로 등장할 수 있다.
□ function ■ 정의 - 자바스크립트 함수를 정의. ■ 문법
□ 함수 이름 - 정의할 함수 이름. - 식별자여야 한다. □ 전달인자 - 쉼표로 구분. - 함수 내부에서 값들을 참조. □ 함수 내부 - 임의의 문장들로 구성. - 함수가 정의될 때 실행되는 것이 아닌, 함수 호출로 컴파일되고 실행될 수 있는 형태의 새로운 함수 객체와 연결 되었을 때 실행. ■ 함수 정의
- 자바스크립트의 최상위 단계 코드에 정의하는 것이 보통. - 다른 함수 정의 속에 중첩시킬 수 있다. - if, while 기타 문장 속에서는 함수 정의가 위치할 수 없다. ■ 특징 - 함수 정의는 프로그램의 정적인 구조를 나타낸다. - 자바스크립트 코드가 실행되기 이전의 파싱(parsing)또는 컴파일 단계에서 정의된다. - 자바스크립트 파서(parser)가 함수 정의를 만나면 함수의 몸체를 이루는 문장들을 파싱하고 저장. (실행하지 않는다.) - 함수 정의가 실행 시간이 아닌 코드를 파싱할 때 일어난다.
□ return ■ 정의 - 함수에서 반환되는 값을 지정. ■ 문법
■ 특징 - 함수 몸체 내부에서만 나타날 수 있다. (다른 곳에서 사용될 경우 문법 에러 발생.) - ‘표현식’이 평가되어 그 결과가 함수의 값으로서 반환. - 함수 몸체에 남은 문장이 있더라도 return 문이 실행되는 시점에서 함수의 실행은 종료. - 어떤 값을 반환하는데 사용 가능.
- 값을 반환하지 않고 함수의 실행을 종료할 목적으로 ‘표현식’ 없이 return문만 사용 가능.
□ throw ■ 정의 - 예외를 발생시키다(throw). 에러나 예외 상황을 알린다. * 예외 - 예외적인 상황이나 에러가 발생했음을 가리키는 신호. ■ 예외 발생 - 런타임 에러가 일어날 때 마다 에외를 발생시킨다. - 프로그램에서 throw문을 사용하여 명시적으로 예외를 발생시킨다. ■ 문법
■ 특징 - ‘표현식’의 결과값은 무엇이든 될 수 있다. - 대부분 그 타입은 Error 객체 또는 Error의 하위 클래스 중 하나의 인스턴스이다. - 에러 메시지를 담고 있는 문자열이나 어떤 에러 코드를 나타내는 숫자 값도 유용하다.
■ 예외처리 - 예외가 발생하면 자바스크립트 인터프리터는 정상적인 프로그램 실행을 즉시 중단하고 가장 가까운 예외 처리기로 넘어간다. * 예외 처리기 - try/catch/finally 문 중에서 catch절을 사용하여 작성. - 해당 코드 블록에 예외 처리기가 없을 경우, 인터프리터는 예외 처리기를 찾을 때까지 상위 단계를 감싸고 있는 예외 처리기가 있는지 확인하여 과정을 반복한다. - 자바스크립트의 언어적인 구조를 따라서, 즉 호출 스택(call stack)을 따라서 예외가 전파되어 간다. - 아무런 예외처리기를 찾을 수 없을 경우 해당 예외를 에러로 취급하여 사용자에게 보고 한다.
□ try/catch/finally ■ 정의 - 자바스크립트 예외 처리 기법. ■ 특징 - try절은 그저 처리할 예외가 발생할지도 모를 코드 블록을 정의하는 역할. - catch절은 try 블록 내부에서 예외가 발생할 경우 호출되는 문장 블록. - finally 블록은 try 블록에서 일어난 일에 관계없이 항상 실행이 보장되어야 할 뒷정리용 코드가 포함된다. - catch나 finally 블록은 생략할 수 있지만 try블록은 catch나 finally블록 중 하나 이상의 블록과 함께 사용되어야만 한다. - 해당 절에 단 하나의 문장만 존재하더라도 {} 로 감싸야 한다. - catch 절에 사용되는 식별자는 예외객체나 값이 할당된다. ■ 문법
■ 예제 - try/catch문에 대한 예제
- try/finally문에 대한 예제
□with ■ 정의 - 유효 범위 체인을 임시로 변경하려 할 때 사용. ■ 문법
- 유효 범위 체인의 첫 머리에 객체를 추가. - 문장을 실행한 다음 유효 범위 체인을 원래의 상태로 되돌려 놓는다. ■ 특징 - 타이핑을 줄일 수 있다.
- with에 의해 추가된 객체는 일시적으로 유효 범위 체인의 일부가 된다. - with를 사용하는 자바스크립트 코드는 최적화하기가 어렵다. - with문을 사용하지 않고 작성한 동등한 코드에 비해 느리게 실행될 수 있다. - with문 내부에서 함수 정의나 변수 초기화를 했다면 비직관적이고 예기치 않은 작동을 불러일으킬 수 있다.
□빈 문장 ■ 문법
■ 특징 - 빈 문장을 실행하면 아무런 효과도 볼 수 없고 아무것도 실행되지 않는다. - 몸체가 없는 루프를 생성하려 할 때 유용하게 사용할 수 있다.
- 의도적으로 빈 문장을 사용했을 경우 주석으로 명시.
□자바스크립트 문장 요약 ■ 자바스크립트 문장 문법
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|