본문 바로가기

책/자바스크립트 핵심 가이드

3day - 문법(1)

자바스크립트의 좋은점인 문법이다.

핵심 가이드 책에서는 철도 다이어그램 으로 설명 되어있는데

쉽게 표현했다는데 난 잘 모르겠다. 더 어려운거같다.

(철도 다이어그램은 생략함)

1)공백(Whitespace)

공백은 문자를 구분하는 형태나 주석의 형태를 취할 수 있다.

var와 that사이에 있는 빈 칸은 제거할 수 없다. 하지만 다른 빈칸들은 제거해도 상관없다.

/**/ 형태의 블록주석 // 형태의 한 줄 주석을 사용할 수 있다. 

주석은 프로그램의 가독성을 높이고 주석을 달 때는 항상 코드에 대해 적황히 설명해야 한다.

남이 알아보지 못하는 주석은 쓸모가 없기 때문이다.

/**/블록 주석은 이 책에서는 사용을 권장하지 않고 // 한줄주석을 권장한다.

그 이유는 PL/I이라는 언어에서 가지고 온건데 PL/I 프로그램에서는 문자열 리터럴을 제외하고는 이러한 조합이 거의 나타나지 않기 때문이다.(책은 이렇게 나와있는데 처음에 이해가 안된 부분이다.)

예)

1
2
3
/*
    var rm_a = /a*/.match(5);
*/
cs

위에 코드를 보면 주석처리가 안되는 현상이 발생되는데 저런 위험성?이 있어서 권하지 않는거 같다.


2)이름(Names)

하나의 문자나 그 뒤를 이어서 하나 이상의 문자, 숫자, _가 붙는 문자열로 문장, 변수, 매개변수, 속성명, 연산자, 라벨 등에 사용한다. 예약어는 이름으로 사용할 수 없다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
abstract
boolean break byte
case catch char class const continue
debugger default delete do double
else enum export extends
false final finally float for function
goto
if implements import in instanceof int interface
long
native new null
package private protected public
return
short static super switch synchronized
this throw throws transient true try typeof
var volatile void
while with
cs

목록에 포함되어 있을꺼 같은 undefined, NaN, infinity 등은 없다.(가뜩이나 영타도 느린데 힘드네)

예약어는 변수 이름이나 매개변수 이름으로 사용할 수 없다. 예약어는 객체 리터럴의 속성명이나 객체의 속성을 나타낼 때 사용하는 마침표 다음에 사용할 수 없다.


3)숫자(Numbers)

자바스크립트는 숫자형이 하나만 있다. 내부적으로 숫자는 64비트 부동 소수점 형식을 지닌다.

이는 자바의 double 형과 같다.(저게 뭔지 모른다...)

자바스크립트에서는 정수와 실수의 구분이 없다. 즉 1과 1.0은 같은 값이다.

short형을 사용해서 오버플로우가 발생하는 등이 전혀 없으며 

단지 알아야 할 것은 숫자형이라는 것이다.

숫자 리터럴이 지수 부분을 포함하는 경우 이 숫자 리터럴의 값은 e 앞의 값에다 e 뒤의 값만큼 10을 제곡한 값의 곱이 된다.

100 == 1e2

1000 == 1e3

음수는 수 앞에 -를 붙이면 된다.

NaN은 수치 연산을 해서 정상적인 값을 얻지 못할때의 값이다. NaN은 그 자신을 포함해서 어떤 값하고도 같지 앖다. 그래서 NaN인지 확인하려면 비교구문이 아니라 isNaN() 이라는 함수를 사용한다.

숫자는 메소드 이며 Math라는 객체에 수치 계산을 위한 메소드가 있다.

예) Math.floor(number) 메소드는 수를 정수로 변환할 때 사용한다.


4)문자열(Strings)

문자열은 작은 따옴표('')나 큰 따옴표("")로 묶어서 나타내며 따옴표 안에는 문자0개이상을 포함한다.자바스크립트 내의 모든 문자는 16비트 유니코드인데 이유는 유니코드가 16비트 문자 셋일때 개발 했기 때문이다.

자바스크립트에는 문자 타입이 없어서 문자 하나를 나타내기 위해서는 문자 하나만을 포함하는 문자열을 사용해야 한다.

이스케이프 시퀀스로 |(백슬래시)나 따옴표, 제어문자 처럼 일반 문자가 아닌 특별한 문자를 문자열에 삽입할 수 있다.

"A" === "|u0041"

|u로 시작하는 표기법은 유니코드 숫자값으로 문자를 나타낼 수 있다.

문자열은 length라는 속성이 있는데 "seven".length의 값은 5이다.

문자열은 변하지 않는다. 하지만 여러 문자열을 + 연산자로 연결하면 새로운 문자열을 만들 수 있다.

분리된 문자열이 + 연산자로 연결되든 그냥 문자열 하나든 문자들의 순서가 같으면 같은 문자열이다.

"c" + "a" + "t" === 'cat' //true

문자열은 매소드가 있다.(뭔 소린지 모르겠으나 8장을 참조하란다. 나중에 알아보자)

'cat'.toUpperCase( ) === 'CAT'