더글라스 크락포드의 자바스크립트 핵심가이드를 정리한 문서입니다.
총 10장으로 이루어진 책으로 한 장씩 정리하여 포스팅 할 예정입니다.
본 책은 자바스크립트의 좋은 점만을 정리한 책으로, 나쁜 점을 잊어야 할 수고를 덜 수 있습니다.
0. 철도 다이어그램.
이 책에서는 문법을 설명하기 위하여 철도 다이어그램을 도입하였습니다.
- 왼쪽에서 오른쪽으로 이동
- 이동시, 도형안의 리터럴이나 사각형안에 있는 설명 또는 규칙을 마주침
- 트랙을 따라 가는 경로는 어떤 경로도 유효함
- 트랙을 따라가지 않는 경로는 모두 무효함
- 양 끝에 세로막대 하나를 가진 다이어그램은 한쌍의 토큰 사이에 공백을 허용함
- 세로막대 두개를 가진 다이어그램은 공백을 허용하지 않음
- 공백
문자를 구분하는 형태이며, 주석 또한 공백입니다.
/**/ 주석은 정규식에서 구문오류 발생할 수 있기 때문에 인라인 주석을 권장합니다
// bla bla bla/* bla bla bla
bla bla bla */
2. 변수명
문자로 시작해야하고, 이후부터는 문자, 숫자, _ 가 가능합니다
예약어는 사용이 불가능합니다
sample_var1 = 1;
3. 숫자
정수와 실수의 구분이 없고, 내부적으로 64bit의 float 형식을 취하고 있습니다. 자바에서 double과 동일합니다
NaN(Not A Number), 정상 숫자가 아닐때 표현 하는 값입니다. isNaN() 이라는 내장함수로 값 평가를 boolean 형태로 받을 수 있습니다.
4. 문자열
‘’ or “” 사이의 문자들의 조합이며, 모든 문자는 16 bit unicode 입니다. string과 byte 등의 타입 구분이 없습니다. 문자열은 + 연산자로 concatenation이 가능합니다.
var c = 'c';
var a = "a";
var t = 't';
var cat = c + a + t;
5. 문장
모든 실행 문장을 공통 전역공간(namespace)에서 사용합니다.
- var: 함수 내부에서 사용될 때 함수의 private 변수를 정의합니다
- break, return ,throw: 로직을 exit 하는 문장이며, 역할은 다른 언어와 동일합니다
- if: 조건문으로 사용되며, 블록은 새로운 유효범위를 생성하지 않는 것에 유의해야 합니다. = 는 할당할 때 사용하며 동등연산자는 ===를 사용합니다.
var a = 1;
if (a === 1) {
console.log('A is one');
}
- switch: 조건을 여러가지 값으로 평가할 때사용하며 case 표현식은 상수일 필요가 없습니다.
- for: 반복문 또는 객체를 나열하는 문장입니다.
// 반복문
var i = 0
for (i=0;i<10;i++){
console.log(i)// 객체를 나열
var person = {
fname = 'Junyeong',
lname = 'Choi'
}
for (info in person){
console.log(person[info])
}
- return: 함수를 호출한 곳으로 돌아가며, 표현식이 없을 경우 undefined를 반환합니다.
- try-catch와 while의 문법은 다른 언어와 동일합니다
6. 리터럴
리터럴은 데이터를 표현하는 방식 그 자체를 의미합니다.
객체 리터럴은 객체를 표현하는 방식과 객체를 의미합니다. 키와 값으로 구성되어있으며 생성하자마자 Object라는 내장객체를 부모로 가지고 있습니다.
var person = {
fname = 'Junyeong',
lname = 'Choi',
gender = 'male'
}