2.1 변수는 참조다
JavaScript에서 변수는 객체에 대한 참조를 나타내며, 변수 자체가 아니다. 이는 JavaScript에서 변수를 만드는 경우 단순히 메모리의 객체에 대한 참조를 만드는 것을 의미해.
이 특징은 특히 함수를 통해 객체를 전달하거나 다른 변수에 할당할 때 변수 작업에 중요한 결과를 초래한다.
변수를 만들고 값을 할당할 때, JavaScript는 이 값에 대한 객체를 메모리에 할당하고 그 객체에 대한 참조를 변수에 할당한다. 한 변수를 다른 변수에 할당하면 새 변수는 원래 변수와 같은 객체를 참조하게 된다. 이는 한 변수를 통해 수행한 변경 사항이 변경 가능한 객체인 경우 다른 변수에도 적용됨을 의미한다.
예시:
let a = [1, 2, 3];
let b = a;
b.push(4);
console.log(a); // 출력: [1, 2, 3, 4]
b
에 4를 추가했지만, 이 리스트는 a
의 리스트에도 추가된다. 왜냐하면 두 변수 모두 [1, 2, 3]
리스트 객체에 대한 참조일 뿐이기 때문이야.
2.2 타입 undefined
JavaScript에는 두 가지 특별한 데이터 타입: null
및 undefined
가 있어. 이 타입들은 서로 유사하기 때문에 개발자들이 자주 질문을 하지만, 그 용도가 다르며 다양한 상황에서 사용돼. 자세히 살펴보자.
타입 undefined
undefined
타입은 선언되었지만 초기화되지 않은 변수의 값을 의미해. 이 값은 또한 객체의 존재하지 않는 속성에 접근하거나 존재하지 않는 배열 요소를 찾을 때도 반환되지.
예시
1. 초기화되지 않은 변수:
let x;
console.log(x); // undefined
2. 존재하지 않는 객체 속성:
let obj = {};
console.log(obj.property); // undefined
3. 존재하지 않는 배열 요소:
let array = [1, 2, 3];
console.log(array[5]); // undefined
4. 누락된 함수 인수:
function myFunction(a, b) {
console.log(b); // undefined, if 호출 as myFunction(1)
}
myFunction(1);
undefined의 속성:
undefined
는 데이터 타입이자 값이야typeof undefined
는undefined
를 반환해
2.3 타입 null
null
타입은 의도적으로 값이 없음을 나타내. 이 값은 나중에 객체가 할당될 변수의 초기화 또는 변수 값의 삭제에 자주 사용돼.
예시
1. 변수의 초기화:
let obj = null;
console.log(obj); // null
2. 변수 값 삭제:
let user = { name: "Alice" };
user = null; // user는 이제 객체를 가리키지 않아
null의 속성:
null
은 값의 의도적인 부재를 나타내는 값이야typeof null
는object
를 반환하지만, 이는 JavaScript의 인정된 오류야 (null
은 실제로 객체가 아니야)
2.4 null과 undefined 비교
null
과 undefined
는 값의 부재를 나타내기 위해 사용될 수 있지만, 그들의 용도와 사용 문맥은 다르다.
특성 | null | undefined |
---|---|---|
유형 | 기본 유형 | 기본 유형 |
목적 | 값의 의도적 부재 | 초기화되지 않은 변수 |
사용 | 변수 초기화, 값 삭제 | 존재하지 않는 속성, 배열 요소 |
기본값 | 없음 | 있음 (초기화되지 않은 변수, 함수 매개변수) |
사용 예시
1. 객체 또는 배열로 변수 초기화:
let myObject = null;
let myArray = null;
2. 값 확인:
let value;
if (value === undefined) {
console.log("변수가 초기화되지 않았다.");
}
let result = null;
if (result === null) {
console.log("값의 부재.");
}
3. 값 삭제:
let person = { name: "Alice" };
person = null; // 이제 person은 객체를 가리키지 않아
4. 속성 존재 여부 확인:
let obj = {};
if (obj.property === undefined) {
console.log("속성이 존재하지 않는다.");
}
JavaScript에서 null
과 undefined
의 차이를 이해하는 것은 값을 올바르게 관리하고 코드에서 오류를 방지하는 데 중요해.
undefined
는 일반적으로 초기화되지 않은 변수나 누락된 속성을 나타내며, null
은 의도적으로 값이 없음을 나타낼 때 사용된다.
이 특별한 데이터 타입들을 올바르게 사용하면 코드를 더 이해하기 쉽게 하고 예측 가능하게 만들어.
GO TO FULL VERSION