자바스크립트!!!! 의 좋은 문법들



문법은 철도 다이어그램으로 설명을 한대요. 뭔지는 몰라도 일단 그런가 보다 합니다.




철도 다이어그램을 해석하는 방법

- 왼쪽에서 시작해서 트랙을 따라 오른쪽 끝으로 이동

- 오른쪽으로 가다 보면 둥근 도형 안의 리터럴이나 사각형 안에 있는 설명 또는 규칙을 만남

- 트랙을 따라가는 것이라면 어떠한 경로라도 유효

- 트랙을 따라가지 않는 경로는 모두 무효

- 양 끝에 세로 막대 하나를 가진 철도 다이어그램은 한 쌍의 토큰 사이에 공백(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)

- 함수 리터럴은 함수 값을 정의

- 함수 리터널은 이름을 가질 수 있음, 이 이름은 자신을 재귀적으로 호출할 때 사용 할 수 있음

- 함수 리터널은 매개변수 목록을 가질 수 있음

   이 매개변수는 함수 호출 시 넘어온 인수로 초기화되는 변수








Posted by croute

댓글을 달아 주세요