자바스크립트의 데이터 타입에는 단순 데이터를 저장하는 원시타입, 객체로서 저장되는 참조타입이 있다.
자바스크립트는 변수 객체의 스코프를 따라서 변수를 추적한다.
원시타입 -> 변수객체
참조타입 -> 변수객체 참조값 -> 실제 객체의 포인터
원시타입
1. Boolean
2. Number
3. String
4. Null
5. Undefined
**typeof null // 결과값 : object
참조타입
1. 객체 (내장타입 - Array, Date, Error, Function, Object, RegExp)
원시래퍼타입
1. String
2. Number
3.Boolean
EX)
var name = "kimsunwoo";
var firstChar = name.charAt(0);
위 코드를 실행할 때, 자바스크립트 엔진이 하는 일이다.
var name = "kimsunwoo";
var temp = new String(name);
var firstChar = temp.charAt(0);
temp = null;
1. 선언
EX)
function add(num1, num2){
return num1 + num2;
}
-> 호이스팅(hoisting) : 함수가 선언된 컨텍스트의 가장 위에서 정의된 것처럼 다루어진다.
EX) add(num1, num2)의 코드가, 함수가 선언되기 전에 있어도 오류가 안난다.
2. 표현식
EX)
var add = function(num1, num2){
return num1 + num2;
}
3. arguments 라는 구조체에 함수의 매개 변수가 저장되기 때문에 몇 개의 매개 변수를 전달하든 오류가 나지 않는다. -> 전달 받는 매개변수의 수가 확실하지 않을 때 유용하게 사용 가능
EX)
var i = 0;
var paramLength = arguments.length;
while( i < paramLength ){
do something ..
}
이미지 출처 - http://blog.daum.net/_blog/BlogTypeView.do?blogid=0dH1E&articleno=212