일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- TLS
- https
- 3-Way HandShake
- 로드 밸런싱
- SSL
- aws
- 인증서
- 자동화
- 이미지 포맷 변경
- 검색엔진최적화
- certbot
- 성능 개선
- 이미지 최적화
- gitgub actions
- DNS
- webp
- CI
- pm2
- ec2
- 배포
- tcp
- 무중단
- workflow
- 렌더링 과정
- 리버스 프록시
- nextJS
- 브라우저
- SSH
- nginx
- 이미지 압축
- Today
- Total
개발일기
원시타입과 객체타입 본문
원시타입과 객체타입
1. 원시타입이란 ?
- 원시타입은 변경이 불가능한 값이다.
- 원시 값을 변수에 할당하면 변수에는 실제 값이 저장된다.
var score = 80;
var copy = score;
console.log(score); //80
console.log(copy); //80
score = 100;
console.log(score); //100
console.log(copy); //80
값에 의한 전달
변수에 원시 값을 갖는 변수를 할당하면 할당받는 변수(copy)에는 할당되는 변수(score)의 원시 값이 복사되어 전달된다.
이를 값에 의한 전달 이라 한다.
var score = 80;
var copy = score;
console.log(score,copy); //80 80
console.log(score === copy) // true
score 변수와 copy 변수는 숫자 값 80을 갖는다는 점에어는 동일하지만, score 변수와 copy변수의 값 80은 다른 메모리 공간에 저장된 별개의 값이다.
2. 원시타입의 종류
- 문자열(string)
- 숫자(number)
- 불리언(boolean)
- null
- undefined
- 심벌(Symbol)
3. 객체타입이란 ?
- 객체(참조) 타입의 값, 즉 객체는 변경 가능한 값이다.
var person = {
name: 'Lee'
};
//프로퍼티 값 갱신
person.name = 'Kim';
//프로퍼티 동적 생성
person.address = 'Seoul'
console.log(person) // {name: 'Kim', address: 'Seoul'}
원시 값은 변경 불가능한 값이므로 원시 값을 갖는 변수의 값을 변경하려면 재할당 외에는 방법이 없다. 하지만 객체는 변경 가능한 값이다. 따라서 객체를 할당한 변수는 재할당 없이 객체를 직접 변경할 수 있다. 즉, 재할당 없이 프로퍼티를 동적으로 추가할 수도 있고 프로퍼티 값을 갱신할 수도 있으며 프로퍼티 자체를 삭제할 수도 있다.
var person = {
name: 'Lee'
};
//얕은 복사
var copy = person;
//copy와 person은 동일한 객체를 참조한다.
console.log(copy === person) // true
//copy를 통해 객체를 변경
copy.name = 'Kim'
//person을 통해 객체를 변경
person.address = 'Seoul'
console.log(person) // {name: 'Kim', address: 'Seoul}
console.log(copy) // {name: 'Kim', address: 'Seoul}
참조에 의한 전달
위처럼 원본 person을 사본 copy에 할당하면 원본 person의 참조 값을복사해서 copy에 저장한다. 이때 원본 person과 사본 copy는 저장된 메모리 주소는 다르지만 동일한 참조 값을 갖는다. 이것은 두 개의 식별자가 하나의 객체를 공유한다는 것을 의미한다.
var person1 = {
name: 'Lee'
};
var person2 = {
name: 'Lee'
}
console.log(person1 === person2) //false
console.log(person1.name === person2.name) //true
person1 변수와 person2 변수가 가리키는 객체는 비록 내용은 같지만 다른 메모리에 저장된 별개의 객체이다. person1변수와 person2 변수의 참조 값은 전혀 다른 값이다. 하지만 프로퍼티 값을 참조하는 person1.name과 person2.name은 값으로 평가될 수 있는 표현식이다. 두 표현식 모두 원시 값 ' Lee'로 평가된다.
'Javascript' 카테고리의 다른 글
함수 호이스팅 (0) | 2024.07.18 |
---|---|
메서드 기록해두기(split, slice, splice) (0) | 2024.06.10 |
자바스크립트 구조분해할당 (0) | 2024.03.31 |
객체 타입의 얕은 복사와 깊은 복사 (0) | 2024.03.07 |
var와 let 그리고 호이스팅 (1) | 2024.03.01 |