
문자열은 유사 배열 객체이면서 이터러블이므로 배열과 유사하게 각 문자에 접근 가능.
const str = 'string';
console.log(str[0]); // s
console.log(str.length); // 6
console.log(str.toUpperCase()); // STRING
원시 객체이므로 문자열은 불변성을 갖음.
let str = 'string';
// 문자열은 원시 값이므로 변경 불가. 에러가 발생하진 않음.
str[0] = 'S';
console.log(str); // string
예기치 못한 변경으로 부터 자유롭고, 이로 인해 신뢰성이 보장됨.
변수에 원시 값을 갖는 변수를 할당하면 할당받는 변수에는 할당되는 변수의 메모리 주소가 전달 됨.
아래 코드를 보면 두 변수의 값은 서로 같은 메모리 주소를 참조 하지만, 값의 재할당을 통해 참조하는 메모리 주소가 변경되어 서로 다른 별개의 값을 참조하게 됨.
let score = 80;
let copy = score;
console.log(score); // 80
console.log(copy); // 80
score = 100;
console.log(score); // 100
console.log(copy); // 80
객체를 할당한 변수를 다른 변수에 할당하게 되면, 하나의 객체를 참조하게 됨.
const person = {
name: 'Lee'
}
const copy = person;
console.log(copy === person); // true
copy.name = 'Kim';
person.address = 'Seoul';
console.log(person); // {name: "Kim", address: "Seoul"}
console.log(copy); // {name: "Kim", address: "Seoul"}