"hello world!"
"hello codestates!"
// "hello world!" 와 "hello codestates!"는 모두 변경할 수 없는 고정된 값입니다.
let word = "hello world!"
word = "hello codestates!"
// 하지만, word라는 변수에 재할당을 하여 변수에 담긴 내용을 변경하는 것은 가능합니다.
const num1 = 123;
num1 = 123456789; // 에러 발생
// const 키워드로 선언하면, 재할당은 불가합니다.
let a = 1;
a = b;
b = 2;
a; // ==> 2
let e = [10, 20];
lef f = e;
f[0] = 50;
e; // ==> [50, 20]
console.log('codestates' === 'codestates');
console.log(3.14 === 3.14);
console.log([1,2,3] === [1,2,3]);
console.log({ foo: 'bar' } === { foo: 'bar' });
답 : true true false false
자바스크립트는 머리를 씁니다. 그러면 메모리에 공간은 내가 알아서 부여하고, 변수는 그 공간의 주소만 참조하도록 하자! 그래서 참조 자료형이 탄생하게 됩니다.
값의 크기가 수시로 변하는 것을 처리하기 위해서 참조자료형은 heap이라는 별도의 메모리 저장공간 사용
참조 자료형의 ===(strict equality)는 주소값이 같은지를 확인
console.log([1,2,3] === [1,2,3]);
이 코드를 읽으면서 컴퓨터는 이미 두개의 heap 저장 공간의 주소 확보
미리 주소값과 메모리 값을 잡아둔다 --> [] === [] 도 true 가 나오지 않음
let x = { foo: 3 };
let y = x;
y = 2;
답 : 3
let x = { foo: 3};
let y = x; // 여기서 y는 x의 주소값 할당
y = 2; // 하지만 다시 2를 할당
이 과정에서 참조 자료형 {foo : 3}에는 아무런 영향을 미치지 않았기 때문에
x.foo는 그대로 3
let myArray = [2, 3, 4, 5];
let ourArray = myArray;
ourArray[2] = 25;
ourArray = undefined;
답 : [2, 3, 25, 5]
let player = { score: 3 };
function doStuff(obj) {
obj.score = 2;
}
doStuff(player);
답 : 2
doStuff(player);
function doStuff(obj) {
obj.score = 2;
}
let score = 80;
function doStuff(value) {
value = 90;
}
doStuff(score)
답 : 80
doStuff(score)
function doStuff(value) {
value = 90;
}