자바스크립트 변수(JavaScript Variable)는 값(value)을 담고(hold) 있는 명명된 저장 공간을 말한다. 여기서 값은 자바스크립트가 제공하는 원시 타입(primitive type)의 값 뿐만 아니라 주소도 포함되므로 객체(object)의 주소를 담은 명명된 저장공간 또한 변수에 속한다.(객체를 변수처럼 사용 할 수 있다.)
메모리 측면에서, 변수는 value type
과 reference type
으로 나뉘는데 value type
은 고정된 메머리를 점유(occupy)하는 특징이 있다. 예로 Boolean
value
는 오직 1bit
만을 차지한다. 그리고 모든 numbers
는 JavaScript내에서 64-bit
부동소수점을 갖는 실수로, 8bytes
를 차지하게 된다.
대조적으로 reference type은 길이가 고정되지 않은 값에 대한 참조를 담는다. reference type으로는 objects, arrays, functions가 있다.
원시자료형이 참조형과 다르게 갖는 속성은 변경불가능(immutable)함 이다. 이는 원시자료형의 값이 바뀌지 않는 성질을 말하는데 이는 변수의 속성이 아님을 기억해 둘 필요가 있다.
let person = 'Ernold'
console.log(person[0]) // output: 'E'
person[0] = 'A'
console.log(person) // output: Ernold
person = 'Arnold'
console.log(person) // output: Arnold
위의 예에서 변수 person
은 원시형의 string
자료형을 담고 있다. 두번째 줄에서 person
의 할당된 string
의 첫번째 글자에 성공적으로 접근하는것을 볼 수 있다. 하지만 세번째 줄에서 string
의 값을 변경하지는 못한다. 원시자료형의 value
는 접근 가능하지만 변경이 불가능한 것이다. 다만 코드의 마지막 단계에서 변수 person
에 새로운 string
을 '넣는것'에 불과하다.