원시 타입(Primitive type)은 6개의 종류가 존재하는데, number type, string type, boolean type, undefined type, null type, symbol type이 있다.
으로 텍스트를 감싼다. 위 세 따옴표로 감싸지 않으면 엔진은 텍스트가 아닌 키워드나 식별자로 판단한다.프리미티브 타입 데이터는 변수에 할당될 때 메모리 크기가 정해지며, 변경이 불가능한 읽기 전용 데이터이다. 프리미티브 타입 데이터를 변경하면 메모리의 값이 변경되는 것이 아니라 메모리가 새로 할당되며, 변수는 새롭게 재할당된 원시 값을 나타낸다. 즉 변수 a의 데이터를 b로 복사한 후 a의 데이터를 변경하여도 b의 데이터는 변경되지 않는다.
레퍼런스 타입 데이터는 property의 갯수가 정해져 있지 않고, 추가되거나 변경 혹은 삭제될 수 있다. 그러므로 메모리 크기를 미리 정해 놓을 수 없다. 그러므로 변수에 할당될 때 객체 자체의 주소가 아닌, 참조 값(reference value)의 주소를 받는다. reference value는 객체가 저장된 메모리의 주소만을 나타내며, 즉 변수 a의 데이터를 b로 복사한 후 a의 데이터를 변경하면 b의 데이터 또한 변경된다.
리터럴을 사용하여 데이터 타입을 표현한 것.
리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.
예를 들어 16진수의 리터럴은 0x이며, 0xFFFFFF 와 같이 표현된다.
변수 선언 방법에는 세 가지가 있다.
var: 변수에 초기 값을 지정하지 않는다면 undefined 값을 가짐
어떤 함수 안에서 선언되었다면 그 함수 전체에 대하여 유효하며, 미처 변수가 선언되기 전조차도 유효하다. 이를 위해 엔진은 함수 안에 있는 모든 변수를 함수 맨 꼭대기로 끌어올린다(Hoisting).
let: 변수에 초기 값을 지정하지 않으면 역시 undefined 값을 가짐
변수가 선언된 블록, 구문 또는 표현식 내에서만 유효하며, 변수가 초기화 혹은 선언되기 전에 참조할 경우 ReferenceError가 발생한다.
const: 유효 범위는 let과 동일하지만, 값의 재할당 및 재선언도 불가능하다. 즉 처음 선언할 때 반드시 초기화를 해야한다. 또한 관습적으로 대문자를 사용하여 선언한다.
예외적으로 x = 5와 같은 식으로 변수를 생성 할 수도 있는데, 사용하지 않는 것이 좋다.
변수의 스코프에는 global과 local이 있다.
global scope는 코드 어느 곳에서나 해당 변수에 접근할 수 있다는 의미의며, 이 속성을 가진 변수는 코드가 시작될 때부터 끝날 때까지 존재한다. local scope는 코드의 특정 부분에서만 사용 가능하므로 이 속성을 가진 변수는 함수가 시작될 때 생성되고 함수가 끝나면 삭제된다.
JavaScript의 타입은 언제든지 변경될 수 있다. 이중 개발자가 의도적으로 값의 타입을 변경하는 것을 casting, 엔진이 암묵적으로 변경하는 것을 coercion이라고 한다.
1차 배열 선언
var newArray = new Array();
2차 배열 선언: 2행 3열 기준
var newArray = new Array(2);
myArray[0] = new Array (3);
myArray[1] = new Array (3);
or
var myArray = new Array(new Array(3), new Array(3));
명시적인 타입 표기 없이도 엔진이 값의 타입 정보를 추론하는 것이다.
자바스크립트는 타입 추론을 지원하지 않는다.
출처