값에 의한 전달
참조에 의한 전달
변수
: 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름값
: 변수에 저장된 데이터로서 표현식이 평가되어 생성된 결과상수
는 재할당이 금지된 변수
const 키워드를 사용해 선언한 변수에 할당한 객체는 변경 가능
const o = {}
o.a = 1 // o -> { a: 1 }
원시값을 할당한 변수에 새로운 원시 값을 재할당시
새로운 메모리 공간을 확보
재할당한 원시 값을 저장
변수는 새롭게 재할당한 원시 값을 가리킴
⇒ 변수가 참조하던 메모리 공간의 주소를 변경
이러한 특성을 불변성
이라 함
문자열과 불변성
원시값 저장시 메모리 공간 크기 결정 필요 → 원시 타입별로 메모리 공간 크기 미리 정해야 함
문자열
var str = 'Hello';
str = 'World';
⇒ 식별자 str은 문자열 ‘Hello’를 가리키고 있다가 문자열 ‘World’를 가리키도록 변경된 것
문자열의 한 문자만 변경 가능한지
유사 배열 객체 (array-like object)
var str = 'string';
console.log(str[0]); // s
console.log(str.length); // 6
console.log(str.toUpperCase()); // STRING
str[0] = 'S'
console.log(str); // string
변수를 변수에 할당했을 경우 (값에 의한 전달)
var score = 80;
var copy = score;
score = 100;
console.log(copy); // ???