JS engine
- JS코드를 이해하고, 실행하는 프로그램으로 인터프리터라고 이해하면 된다.
- V8 : chrome와 Electron, Node.js, Microsoft에서도 사용중이다.
- SpringMonkey : firefox에서 사용중이다.
- JsvaScriptCore : 오픈 소스로 apple에서 사용중이다.
- JS는 다양한 업체에서 만들기 때문에 각기 다른 JS engine구현 또는 채용중이다.
JS 최근 동향
- Electron을 사용하여 프로그램도 만들고 react-native, NativeScript를 사용하여 모바일 앱도 만들고 Node.js로 백앤드에서도 활용가능하다.
- 크로스 브라우징 문제로 ES6기준(ECMAScript2015)으로 사용중이다.
JS naming rule
- 변수는 camelCase로 명명 (python 같은 경우는 snake_case)
- class는 PascalCase로 명명
- method는 동사로 시작하면 좋다
- is, has, are 과같은 동사를 사용하여 boolean 변수를 나타냄
변수 선언
let
const
- JAVA의 final 느낌으로 한번 선언되면 내용물을 바꿀 수 없다
datatype
0. typeof
- Java의 getClass().getName()과 같다
console.log(typeof 변수명)
1. Number
int, float, double 모두 갖고있는 datatype
2. String
3. Boolean
- ('아무거나 1개라도 있으면') === true
('') === false
4. null
- 값이 아예없음
Null, NULL 도 아니고 null임!!
5. undefined
- 값이 할당되지 않음
Undefined, UNDEFINED 가 아니고 undefined임!!
6. object
7. Symbol
Symbol([description])
- description은 문자열을 숫자등의 데이터가 될 수 있으며, 해당 심볼을 설명하기위한 목적 이외에는 심볼 생성, 접근등과 관련 없음
let testSymbol1 = Symbol(1);
let testSymbol2 = Symbol(1);
console.log(testSymbol1 == testSymbol2);
console.log(testSymbol1 === testSymbol2);
형변환 method
string -> int
- Number("1.2") -> 1.2
- ParseInt("1.2") -> 1
- ParseFloat("1.2") -> 1.2
int -> string
- String(1.2) -> (String) 1.2
boolean
- Boolean(0) -> false
- Boolean(나머지 수) -> true
화살표 함수
let 함수이름 = (함수인자) => expression
let 함수이름 = (함수인자) => {statements}
함수이름(함수인자)
- 함수인자가 1개면 괄호() 생략가능
- statements가 아니라 expression으로 1줄로 표현이 가능하다면 괄호, return 생략 가능