자바스크립트!!!! 의 좋은 문법들
문법은 철도 다이어그램으로 설명을 한대요. 뭔지는 몰라도 일단 그런가 보다 합니다.
철도 다이어그램을 해석하는 방법
- 왼쪽에서 시작해서 트랙을 따라 오른쪽 끝으로 이동
- 오른쪽으로 가다 보면 둥근 도형 안의 리터럴이나 사각형 안에 있는 설명 또는 규칙을 만남
- 트랙을 따라가는 것이라면 어떠한 경로라도 유효
- 트랙을 따라가지 않는 경로는 모두 무효
- 양 끝에 세로 막대 하나를 가진 철도 다이어그램은 한 쌍의 토큰 사이에 공백(whitespace)을 허용한다는 뜻
- 세로 막대 두개가 있는 경우는 그렇지 않다는 뜻
자바스크립트의 주석
- 블록 주석: /* */
- 한 줄 주석: //
but! 자바스크립트에서는 /* */ 이러한 조합이 정규 표현식 리터럴에서도 나타날 수 있다!!! 그러므로 블록 주석 방법은 안전하지 않다고 본다. 가능하면 /* */를 사용하는 대신 //를 사용할 것을 권장한다.
이름(name)?
- 하나의 문자나 그 뒤를 이어 하나 이상의 문자, 숫자, _가 붙는 문자열
- 문장, 변수, 매개변수, 속성명, 연산자, 라벨 등에 사용
- 예약어들은 이름(name)이 될 수 없어!!
abstract boolean break byte case catch char class const continue debugger default .... 등등 |
숫자(Numbers)??
- 자바 스크립트에는 숫자형이 하나만 존재
- 내부적으로 숫자는 64비트 부동 소수점 형식, 자바의 double 형과 같음
- 정수와 실수 구분이 없음: 1과 1.0은 같음
- short 형을 사용해서 오버플로우가 발생하는 등의 일이 전혀 없다! 단지 알아야 할 것은 숫자형이라는 것뿐!
- 지수 부분을 포함하는 경우 이 숫자 리터럴의 값은 e 앞의 값에다 뒤의 값만큼 10을 제곱한 값의 곱.
100은 1e2와 같음
- 음수는 수 앞에 -를 붙임
- 수치 연산을 해서 정상적인 값을 얻지 못했을 때의 값은 NaN
- NaN은 자기 자신을 포함해서 어떤 값과도 같지 않음
NaN인지 확인하려면 isNan()이라는 함수를 사용해야 함.
- 1.79769313486231570e+308 보다 큰 값은 Infinity
- 숫자 관련 메소드: Math라는 객체에 수치 계산을 위한 메소드 존재
문자열(Strings)???
- 문자열은 작은 따옴표나 큰 따옴표로 묶어서 나타냄
- 따옴표 안에는 문자 0개 이상을 포함
- \(백슬래시)는 이스케이프(탈출)문자
- 모든 문자는 16비트 유니코드
- 자바스크립트에는 문자 타입이 없음 -> 문자 하나를 나타내기 위해서 문자 하나만을 포함한 문자열을 사용!
- 이스케이프 시퀀스로 \나 따옴표, 제어문자처럼 일반 문자가 아닌 특별한 문자를 문자열에 삽입 가능
"A" === "\u0041"
- 속성 length: "seven".length의 값은 5
- 일단 한번 만들어 지면 문자열은 결코!! 변하지 않음.(immutable)
- + 연산자로 연결되어도 문자들의 순서가 같으면 같은 문자열, 그렇기 때문에 아래의 문자열 비교는 true
'c'+ 'a' + 't' === 'cat'
문장(Statements)????
- <script> 태그는 컴파일되어 즉시 실행되는 하나의 컴파일 단위
- 링커(linker)가 없기 때문에 모든 문장을 공통적인 전역 이름 공간(namespace)에 한 데 모아놓음
- var문은 함수 내부에서 사용 될 때, 함수의 private 변수를 정의
- switch, while, for, do 에는 break 에서 사용할 수 있는 라벨을 선택적으로 지정 가능
- 블록은 중괄호로 쌓인 문장들의 집합
- 자바스크립트의 블록은 새로운 유효범위(scope)를 생성하지 않음
- 이런 이유로 변수는 블록 안이 아닌 함수의 첫 부분에 정의
- 거짓에 해당 하는 값들: false, null, undefined, 빈 문자열 ' ', 숫자 0, NaN
이외의 모든 값은 참(true)닷!!: true, 문자열 'false', 모든 객체는 모두 참(ture)!!
표현식(Expressions)?????
- 리터럴 값(문자열이나 숫자), 변수, 내장값들(true, false, null, undefined, NaN, infiity 등등)
- 이항 연산자의 표현식, ? 삼항 연산자의 표현식, 호출, 세부지정(. 또는 [])
연산자 우선순위
. [] () | 세부 지정이나 호출 |
delete new typeof + - ! | 단항 연산자 |
* / % | 곱하기, 나누기, 나머지 |
+ - | 더하기/연결, 빼기 |
>= <= > < |
같지 않음 비교 |
=== !== | 동등 |
&& | 논리적 and |
|| | 논리적 or |
?: | 삼항 |
리터럴(Literals)??????
- 객체 리터럴은 새로운 객체를 생성할 때 편리한 표기법
- 속성명은 이름이나 문자열로 지정
- 속성명은 변수가 아니라 리터럴 이름이기 때문에 객체의 속성명은 받느시 컴파일 시에 알려져야 함
- 속성의 값은 표현식
함수(Functions)
- 함수 리터럴은 함수 값을 정의
- 함수 리터널은 이름을 가질 수 있음, 이 이름은 자신을 재귀적으로 호출할 때 사용 할 수 있음
- 함수 리터널은 매개변수 목록을 가질 수 있음
이 매개변수는 함수 호출 시 넘어온 인수로 초기화되는 변수
'Web Server > HTML5 & Web' 카테고리의 다른 글
[JS] 자바스크립트 함수 (2) | 2012.07.06 |
---|---|
[JS] 자바스크립트 객체 (0) | 2012.07.05 |
[JS] 자바스크립트!!! (0) | 2012.07.04 |
[DOM] What is Document Object Model? (0) | 2011.05.18 |
[HTML5] Web SQL Database : 웹 SQL 데이터베이스 (0) | 2011.05.18 |