1. 문법
1.1 대소문자 구분
- 변수나 함수이름, 연산자 모두 대소문자를 구분함
1.2 식별자
- 첫번째 문자는 반드시 글자나 밑줄(_), 달러기호($) 중 하나여야 함
- 다른 문자에는 글자나 밑줄, 달러기호, 숫자를 자유롭게 쓸 수 있습니다.
- ECMAScript 식별자는 관습적으로 카멜케이스를 사용(카멜 케이스란 첫번째 글자는 소문자로 단어가 바뀌는 첫번째 글자는 대문자로 표기하는 방식) : firstSecond, getProperty, setProperty
1.3 주석
- // 한줄 주석
- /*
* 블럭 주소 형식
* 이런 식으로 사용함
*/
1.4 스트릭트 모드
- ECMAScript 5판에서 도입함
- "use strict"; 라고 명시하여 사용
- 전체 스크립트에 적용을 하려면 맨 위에 작성
- 함수 단 하나만 사용하려면 함수 본문 맨 앞에 작성
예) function doSomething() {
"use strict";
// 함수 본문
}
- 인터넷 익스플로러10+, 파이어폭스 4+, 사파리5.1+, 오페라 12+, 크롬등에서 지원
1.5 문장
- 문장의 끝은 세미콜론으로 종료
- 코드 블록은 여는 중괄호({)로 시작해서 닫는 중괄호(})로 종료
2. 키워드와 예약어
- 키워드나 예약어는 식별자나 프로퍼티,함수등의 이름에 사용할 수 없음
- break, do, if, else, try, catch, with, while, ... 기본적인 프로그래밍 언어에서 사용하는 명령어 키워드
- abstract, enum, public, private, protected, int, long, ... 아직은 특별한 쓰임새가 없지만 미래에 키워드로
사용할 가능성이 있는 예약어
- 일반 모드에서 사용하는 예약어 : class, enum, extends, super, const, export, import
- 스트릭 모드에서 사용하는 예약어 : implements, package, public, interface, private, static, let, protected, yield
3. 변수
- ECMAScript는 느슨한 변수 타입을 사용(이는 변수에 어떤 타입의 데이터라도 저장이 가능하다는 의미임)
- 변수를 정의 할때는 변수명 앞에 var를 사용
- 변수를 초기화 하지 않으면 undefined가 할당 됨
- 스트릭 모드에서는 변수를 선언하지 않고 값을 할당하면 ReferenceError에러를 반환함
4. 데이터 타입
4.1 typeof 연산자
- 변수의 데이터 타입을 알고자 할때 사용
- 정의되지 않은 변수 : undefine
- 불리언 : boolean
- 문자열 : string
- 숫자 : number
- 함수를 제외한 객체 또는 null : object
- 함수 : function
4.2 undefine 타입
- 변수를 정의 했지만 초기화를 하지 않은 경우의 데아터 타입
- 빈 객체와 구분을 위해 변수를 undefine으로 초기화 하지 않아야 함
4.3 null 타입
- 빈 객체를 가르키는 포인터 타입
- 변수를 정의할 때 해당 변수가 객체를 가르키게 하기 위해서는 null로 초기화 하길 권장함
- undefine은 null에서 파생되었기에 ECMA-262에서는 두 값이 표면적으로는 동일한 것으로 정의함
4.4 불리언 타입
- true와 false 두개의 리터럴을 가지는 가장 많이 사용되는 데이터 타입
- Boolean()함수를 사용하여 모든 데이터 타입을 불리언 값으로 표현이 가능함
4.5 숫자타입
- 가장 기본적인 숫자 리터럴 형식은 10진법임
- 8진수 리터럴 표현은 첫번째 숫자가 반드시 0이어야 하며 그 뒤에 0부터 7의 숫자를 사용함
- 16진수 리터럴 표현은 첫 두문자에 반드시 0x를 쓰고 그 뒤에 0-9, A-F를 사용함
- 부동 소수점 숫자를 표현하려면 반드시 소수점이 있어야 함
- 굉장히 크거나 작은 부동소수점은 'e-표기법(지수 표기법)'을 사용함
- ECMAScript는 소수점 뒤에 0이 6개 이상 있는 모든 부동 소수점 숫자는 지수 표기법으로 변환함
- ECMAScript로 표현할 수 있는 최소값은 Number객체의 MIN_VALUE 프로퍼티에 저장되고 값은 5e-324입니다. 마찬가지로 최대값은 MAX_VALUE 프로퍼티에 저장되며 값은 1.7976931348623157e+308 임
- 숫자형 범위에서 나타낼 수 없는 숫자라면 해당 값은 자동으로 특별한 값인 Infinity로 변환됨(isFinite함수를 제공하여 숫자의 유효한 범위를 검사 함)
- 숫자형 값 중에는 NaN(Not a Number)이란 특별한 값이 있는데 이는 숫자를 반환할 것으로 의도한 조작이 실해했을 때 반환하는 값(isNaN이란 함수를 제공하여 검사 함)
- 숫자가 아닌 값을 숫자로 바꾸는 함수는 Number(), parseInt(), parseFloat() 세가지를 제공 함
4.6 문자열 타입
- 문자열은 큰따옴표(")나 작은따옴표(')로 감싸서 표현 함
- 문자리터럴
- 값을 문자열로 바꾸는 방법은 toString()메서드와 String()함수 두가지가 있음
4.7 객체타입
- ECMAScript에서 객체는 데이터와 기능의 집합으로 new 연산자를 사용하여 만든
- Object의 인스턴스는 다음의 프로퍼티와 메서드를 가짐
. constructor : 해당 객체를 만드는 데 사용하는 함수. Object() 함수가 생성자
. hasOwnProperty( propertyName ) : 해당 프로퍼티가 객체 인스턴스에 존재하는지 확인함
. isPrototypeOf(object) : 해당 객체가 다른 객체의 프로토타입인지 확인함
. propertyIsEnumerable( propertyName ) : 해당 프로퍼티를 for-in 문에서 나열할 수 있는지 확인함
. toLocaleString() : 객체를 지역에 맞게 표현한 문자열을 반환
. toString() : 객체를 문자열로 변환해 반환
. valueOf() : 객체를 나타내는 문자열이나 숫자, 불리언을 반환
5. 연산자
5.1 단항 연산자
- 단 하나의 값에만 적용되는 연산자
- 증감 연산자 : a++, --a
5.2 비트 연산자
- ECMAScript에서 모든 숫자는 IEEE-754 64비트 형식으로 저장되지만 비트 연산자는 64비트 표현을 직접 조작하지 않고, 값을 32비트 정수로 변환하여 비트 연산자를 적용한 후 결과를 다시 64비트로 바꿈
- 비트 NOT : 틸테(~)로 나타내며 단순히 피연산자의 1의 보수를 반환
- 비트 AND : 앰퍼샌드(&)로 나타내며 두개의 비트가 1인 경우에만 1을 반환
- 비트 OR : 파이프(|)로 나타내며 두개중 하나라도 1이면 1을 반환
- 비트 XOR : 캐럿(^)으로 나타내며 두 비트 중 하나만 1일때 1을 반환
- 왼쪽 시프트 : <<로 나타내며 좌항의 모든 비트를 우항의 숫자 만큼 비트를 이동
- 부호 있는 오른쪽 시프트 : >>로 나타내며 모든 비트를 오른쪽으로 우항의 숫자만큼 이동하되 부호비트는 그대로 유지
- 부호 없는 오른쪽 시프트 : >>>로 나타내며 모든 비트를 오른쪽으로 우항의 숫자만큼 이동
5.3 불리언 연산자
- 논리 NOT : 느낌표(!)로 표시하며 주어진 값의 반대되는 불리언 값을 반환
- 논리 AND : 앰퍼샌드 2개(&&)로 표시하며 두 개의 값이 true일 경우 true값을 반환
- 논리 OR : 파이프 2개(||)로 표시하며 두 개중 하나라도 true이면 true값을 반환
5.4 곱셈 연산자
- 곱셈 : 아스테리크(*)를 써서 표시함
- 나숫셈 : 슬래시(/)를 써서 표시함
- 나머지 : 퍼센트(%)를 써서 표시함
5.5 덧셈 연산자
- 덧셈 : (+)를 써서 표시함
- 뺄셈 : (-)를 써서 표시함
5.6 관계 연산자
- 미만(<), 초과(>), 이하(<=), 이상(>=)의 연산자가 있음
5.7 동일 연산자
- 동일(==), 비동일(!=), 일치(===), 불일치(!==)의 연산자가 있음
- 동일/비동일 연산자는 타입 변환을 통해 값이 일치 할 수 있는 관계를 표시
- 일치/불일치 연산자는 값과 타입이 모두 일치하는 관계를 표시
- 동일/비동일 연산자를 쓰면 타입 변환때문에 자주 문제가 발생하므로 대신 일치/불일치 연산자를 쓰기를 권장함. 일치/불일치 연산자를 쓰면 코드 전반에서 데이터 타입을 관리하기 쉬워짐.
6. 문장
6.1 if문
- 조건 제어문
- if (condition)
statement1;
else
statement2;
6.2 do-while문
- 평가 전 루프문(평가 전 반복문)
- do {
statement
} while(expression);
6.3 while문
- 평가 후 루프문(평가 후 반복문)
- while(expression) {
statement;
}
6.4 for문
- 평가 후 루프문(루프에 들어가기 전에 변수를 초기화 할수 있음)
- for(initialization; expression; post-loop-expression)
statement;
- for(;;) { // 무한 루프
doSomething();
}
6.5 for-in문
- 엄격한 반봅문(객체의 프로퍼티를 나열하는 데 사용)
- for(property in expression) statement;
6.6 문장 레이블
- break나 continue문에서 참조를 위한 문장(또는 블럭)의 위치명
- label : statement
6.7 break문과 continue문
- break문은 즉시 루프에서 빠져나가 루프 다음문장을 실행
- continue문은 루프를 즉시 빠져나가긴 하지만 루프 실행을 계속 됨
6.8 with문
- 코드의 스코프를 특정 객체에 고정
- with(expression) statement;
- 스트릭트 모드에서는 with문을 금지하며 문법 에러로 간주함.
6.9 switch문
- 표현식이 value와 일치하면 해당 statement를 실행
- switch(expression) {
case value: statement;
break;
case value: statement;
break;
case value: statement;
break;
default: statement
}
7. 함수
- 문장을 캡슐화하여 어디서든, 언제든 실행할 수 있게 하는 모든 언어의 핵심
- ECMAScript에서 함수는 function 키워드로 정의하며 그 뒤에 매개변수와 함수 본문을 순서대로 작성
function functionName(arg0, arg1, ..., argN) {
statements
}
- 함수는 항상 값을 반환하거나 항상 반환하지 않게 만들기를 권장함
- 스트릭트 모드에서의 제한
. 함수 이름에 eval이나 arguments는 사용할 수 없음
. 매개변수 이름에도 eval이나 arguments는 사용할 수 없음
. 서로 다른 매개변수에 결코 같은 이름을 쓸수 없음
- ECMAScript함수에는 오버로딩이 없음
'Development > Javascript' 카테고리의 다른 글
2장 HTML 속의 자바스크립트 (0) | 2014.03.25 |
---|---|
1장 자바스크립트란 무엇인가? (0) | 2014.03.25 |