const arr = [];
const toBePushed = 42;
arr.push(toBePushed);
console.log(arr); //[42]
arr = [1, 2, 3]; //재할당은 불가능(TypeError 출력)
const obj = { x: 1 };
delete obj.x; //속성 삭제하기
console.log(obj); //{}
obj.ID = 'dream'; //속성 추가하기
console.log(obj['ID']); //dream
obj = { y: 2}; //재할당은 불가능(TypeError 출력)
console.log(1 + '1') // 11
typeof(1 + '1') //'string'
console.log(123 - '1'); //122
typeof(123 - '1'); //'number'
console.log(1 + true) //2
typeof(1 + true) // 'number'
console.log('1' + true); // '1true'
typeof('1' + true); //'string'
(결론)
최대한 같은 타입끼리 연산을 하자...
단, 새로운 값으로 재할당은 가능함
let color = 'skyblue';
console.log(color); //skyblue
console.log(color.toUpperCase()); //SKYBLUE
console.log(color); //skyblue 출력 -> immutable
color = color.toUpperCase(); //변수color에 재할당하기
console.log(color); //SKYBLUE
let overTwenty = true;
let allowedToDrink = overTwenty; //allowedToDrink === true -> overTwenty의 값인 true를 복사했기 때문
overTwenty = false;
console.log(overTwenty); //false
console.log(allowedToDrink); //true
let currentYear = 2020;
function afterTenYears(year) {
year = year + 10;
}
afterTenYears(currentYear);
console.log(currentYear); //2020
function afterTenYears2(currentYear) {
currentYear = currentYear + 10;
return currentYear;
}
let after10 = afterTenYears2(currentYear);
console.log(currentYear); //2020
console.log(after10); //2030
원시형 자료가 아닌 모든 것
[1, 2, 3]; // [1, 2, 3]이라는 데이터가 heap에 저장되지만 변수 할당이 되지 않아 주소는 어디에도 저장되지 않는다.
const num1 = [1, 2, 3]; // // [1, 2, 3]이라는 데이터가 heap에 저장되고, 그 주소가 변수 num1에 저장된다.
const num2 = [1, 2, 3]; // // [1, 2, 3]이라는 데이터가 heap에 저장되고, 그 주소가 변수 num2에 저장된다.
//배열의 경우
const arr = [1, 2, 3];
console.log(arr.length); //3
arr.push(4, 5, 6);
console.log(arr.length); //6
arr.pop();
console.log(arr.length); //5
//객체의 경우
const obj = {};
console.log(Object.keys(obj).length); //0
obj['name'] = 'Eve';
obj.age = 26;
obj.visitedCountry = ['USA', 'Canada', 'France'];
console.log(Object.keys(obj).length); //3
delete obj.visitedCountry;
console.log(Object.keys(obj).length); //2
const person = {
son: {
age: 9,
},
};
const boy = person.son;
boy.age = 20;
console.log(person.son.age); //20
console.log(person.son === boy); //true
console.log(person.son === { age: 9 }); //false
console.log(person.son === { age: 20 }); //false