웹 브라우저에서 가장 널리 구현된 ECMAScript버전은 ECMA-262 3판이므로
아래 내용은 ECMAScript 3판에서 정의된 내용을 바탕으로 한다.
3.1 문법
c와 비슷하다.
어디서든 대소문자를 구분한다.
식별자 : 변수나 함수, 프로퍼티, 함수 매개변수의 이름 (camelCase 방식으로 쓰는 것이 좋다.) 키워드와 예약어를 사용하지 못한다.
- 첫 번째 문자는 반드시 글자나 _ , $ 중 하나여야 한다.
- 다른 문자에는 글자나 _ $ 숫자를 자유롭게 사용할 수 있다.
주석 : c와 같다. ( // 혹은 /* */ )
스트릭트 모드 : 자바스크립트를 엄격하게 디버깅한다.
- 전체 스크립트 위 혹은 함수 첫 줄에 "use strict"; 를 쓰므로서 사용할 수 있다.
3.3 변수
변수에 어떤 타입의 데이터라도 저장할 수 있다.
변수를 초기화하지 않으면 undefined를 할당한다.
데이터 타입을 바꾸는 행위는 권장하지 않지만 ECMAScript에서는 유효하다.
함수안에서 var을 생략하고 변수를 선언하면 전역변수로 선언된다. (스트릭트 모드에서는 에러가 반환된다.)
var a=1, b=2;와 같이 선언할 수 있다.
3.4 데이터 타입
ECMAScript에서의 다섯 가지 기본적인 데이터 타입 (primitive data type)
- Undefined, Null, Boolean, Number, String
객체 (Object) 는 이름-값 쌍의 순서 없는 데이터 타입이다.
ECMAScript에서 개발자가 데이터 타입을 정의할 수 없으므로 모든 데이터는 위 여섯 가지 중 하나에 속한다.
typeof 연산자 : 변수의 데이터 타입을 알아내기 위해 사용한다.
- 함수를 제외한 객체 또는 null : "object"
- 정의하지 않은 변수에 사용하면 "undefined"가 반환된다.
Null 타입
- 빈 객체를 가리키는 포인터.
- null==undefined의 결과는 true이다.
- 객체를 사용해야 하지만 객체를 이용할 수 없을 때에는 항상 null이 와야한다.
불리언 타입
- true, false 값만 가진다. (대소문자 구분 O)
- ECMAScript에서 모든 타입을 불리언 값으로 표현할 수 있다. (변환하려면 Boolean()을 사용하면 된다.)
================================ 여기부터는 몇 개만 요약함 =================================
숫자 범위 : 메모리 제한으로 모든 숫자를 ECMAScript로 나타낼 수는 없다.
- Number.MIN_VALUE보다 작으면 -infinity가, Number.MAX_VALUE보다 크면 infinity가 된다.
- 범위 안인지 확인하려면 isFinite()를 사용하면 된다.
NaN (Not a Number) : 숫자를 반환할 것으로 의도한 조작이 실패했을 때 반환된다.
- n/0=NaN, NaN/n=NaN
- NaN==NaN의 결과는 false
3.5 연산자
단항 플러스와 단항 마이너스
- 문자열이나 불리언 값을 숫자로 바꿀 때 사용할 수 있다.
동일 연산자의 특별한 경우
nulll == undefined true
"NaN" == NaN false
true == 1 true
undefined == 0 false
null == 0 fasle
"5" == 5 true
3.6 문장
for-in 문
객체의 프로퍼티를 나열하는 데 사용한다.
for (property in expression) {}
ex) for (var propName in window) {}
객체를 가리키는 변수가 null이나 undefined면 에러를 낸다. (ECMAScript 5에서 수정하여 실행하지 않는 것으로 바꿨지만 확인해주는 것이 좋다.)
문장 레이블
label : statement
ex)
outer:
for(){
break outer; 혹은 continue outer;
}
이런 식으로 유용하게 사용할 수 있다.
with 문
코드의 스코프를 특정 객체에 고정한다.
스트릭트 모드에서 금지하며, 성능에 악영향이 있으므로 사용하지 않는 것이 좋다.
ex)
with( object ){
var a = name; // object.name을 의미한다.
}
3.7.1 매개변수의 이해
ECMAScript 함수는 매개변수 숫자를 따지지 않으며 데이터 타입도 체크하지 않는다.
매개변수 개수가 맞지 않아도 에러로 간주하지 않는다.
- 왜냐하면 매개변수가 내부적으로는 arguments라는 배열 객체로 인식되기 때문이다.
- 오버로딩처럼 이용할 수 있다.
- 넘기지 않은 매개변수는 undefined가 된다.
arguments[0]=10;을 하면 매개변수의 값도 10으로 바뀐다.
- 둘은 같은 메모리 공간을 사용하지 않는다.
- 매개변수의 값을 바꿔도 arguments의 값은 바뀌지 않는다.
- 스트릭트 모드에서는 사용할 수 없다.
값을 반환하지 않는 함수는 사실 undefined를 반환한다.
[출처: 프론트엔드 개발자를 위한 자바스크립트 프로그래밍]
'프로그래밍 > JS' 카테고리의 다른 글
5장-1,2) 참조 타입 - Object 타입, Array 타입 (0) | 2016.01.20 |
---|---|
6장-1) 객체 지향 프로그래밍 - 객체에 대한 이해 (0) | 2015.11.23 |
4장) 변수와 스코프, 메모리 (0) | 2015.11.22 |
2장) HTML속의 자바스크립트 (0) | 2015.11.18 |
1장) 자바스크립트란 무엇인가 (0) | 2015.11.18 |