3.1 문법
- 대소문자 구분함
- 식별자 : 숫자는 첫글자로 못 씀. 카멜케이스로 표기 권장
- 주석
- 스트릭트 모드 "use strict";
- 문장 : 세미콜론(;)으로 마무리 권장, 제어문에선 코드블록 권장
3.2 키워드, 예약어
- 37-38page 참고.
- 모드에 따라 예약어가 다르다.
- 5판에서 도입한 let, yield는 3판과의 호환성을 위해 비사용권장.
- 5판에서 키워드와 예약어를 식별자론 쓸 수 없지만 객체의 속성으론 쓸 수 있게 됨. 호환성을 위해 비사용권장.
3.3 변수
- var 타입
3.4 데이터타입
- Undefined, Null, Boolean, 숫자number, 문자열string, 객체object
- typeof : 변수의 데이터타입을 알아야할때
- 함수를 제외한 객체, null = object
- 함수 = function
- undefined : 변수 정의 후 초기화 하지 않을때 할당됨. 정의 안한 변수도 이 타입으로 리턴 됨.
- Null : 변수가 객체를 가리킬때, null로 초기화 권장
- Boolean : true, false. (0,1 아님!!!)
- 숫자
- NaN 숫자 조작이 실패했을 때 반환하는 값. isNaN() 함수 이용할 것.
- Number() : 숫자가 아닌 값을 숫자로 바꾸는 함수. 어떤 타입도 변환.
- parseInt(), parseFloat() : 문자열 -> 숫자
- 관련해서 필요하면 예제를 참고하자. 52page
- 문자 : ", ' 둘다 동일함.
- toString() : 값 -> 문자열
- String() : ? -> 문자열
- 객체 : new Object(); ()는 생략해도 되지만 권장안함.
3.5 연산자
- 비트연산, 쉬프트연산, 논리연산, 관계연산 등 (61page-87page)
3.6 문장 :
- (아는것)if문, do-while문, while문, for문, break, continue문, switch문
- (모르는 것) for-in문 : 객체의 프로퍼티를 나열하는데 사용함.
[javascript]
for(var propName in window){
document.write(propName);
}
[/javascript]- 객체 프로퍼티에 순서가 없으므로 어떤 순서로 반환할 지 알 수 없다. 브라우저마다 다를 수도 있음.
- 객체를 가리키는 변수가 null, undefined 인지 미리 확인할 것
- (모르는 것) with문 : 코드의 실행 범위(스코프)를 특정 객체에 고정시킴.
구글스크립트에서도 적용이 될려나? 테스트 해봐야겠네.
[javascript]
var qs = location.search.substring(1);
var hostName = location.hostname;
var url=location.href;
[/javascript]
with문을 사용하면,
[javascript]
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}
[/javascript]
3.7 함수
- 반드시 값을 반환할 필요는 없다.
- 리턴을 주던가, 안주던가. 코드 전반에 통일을 권장한다. (디버그할 때 힘들다.)
- 스트릭트 모드에서는 제한이 있다. (101pagE)
- 매개변수의 개수를 따지지도 않고, 타임도 체크하지 않는다. 매개변수가 내부적으로 배열로 표현되기 때문(자세한 설명은 101p 매개변수의 이해 참고)
- 매개변수는 참조 형식으로 전달할 수 없으므로 모두 값으로 넘겨야 한다.
- 오버로딩이 없음!!! 같은 이름으로 함수를 여러 번 정의하면 마지막 함수가 이름을 소유한다.
⬅︎ 스터디 교재: 프론트엔드 개발자를 위한 자바스크립트