변수의타입 ( 원시형과 참조형)

임동현·2022년 3월 31일
0

⚡️ 자바스크립트 '원시 자료형'과 '자료 참조형'

데이터의 두가지 타입

● 원시 자료형 (primitive type) 과 참조 자료형(reference type) 이 있다.
● 원시 자료형이 할당될 때에는 변수에 값(value)자체가 담긴다.
● 참조 자료형이 할당될 때는 보관함의 주소 (reference)가 담긴다.

💡 원시 자료형 (Primitive data type) = 원시타입
● 객체가 아니면서 method를 가지지 않는 6가지의 타입이 있다.
● string,number,bigint,boolean,undefined,symbol,(null 은 원시탑과 거의 같게 사용되지만 엄밀히 따지면 객체이다. 빈 참조를 나타내는 데 자주 사용된다.)

→ number :3.14592
→ string :'s2s2hyun'
→ boolean : true & false
→ undefined : 변수가 정의되지 않았거나 값이 없다.
→ null : 의도적으로 비어있음을 표한하기 위해 null 이라는 것이 들어있다.
→symbol

💡 참조 자료형 (Reference data type ) = 참조타입
● 자바스크립트에선 원시 자료형이 아닌 모든것들은 참조형 자료형들이다.
● 참조형은 원시형 데이터의 집합이다.
● 배열([])과 객체({}),함수(function(){})가 대표적이다.
● 참조 자료형은 기존에 고정된 크기의 보관함이 아니다.
● 참조 자료형을 변수에 할당할 때는 변수에 값이 아닌 주소를 저장한ㄷ.
● 동적으로 크기가 변하는 데이터를 보관하기 위해 변수가 아닌 다른곳에 데이터를 저장하고 변수에는 그 주소만 할당한다 .
● 배열 → Array:[0,1,2,3,4]
● 객체 - Object{name: "s2s2hyun" , age:32}
즉, 변수에는 하나의 값 혹은 주소만 저장할 수 있다.

const로 선언한 변수 배열에 Array.push를 적용할수 있는 이유는?

배열은 참조형이기 때문에 데이터의 주소를 대입할 수 있기 때문이다.

● 값이 저장된 주소값을 할당한다.
● 비어있는 데이터 공간을 확보하고 객체 속 프로퍼티에 대한 공간을 다시 확보한다.
●객체의 프로퍼티명과 주소를 매칭하고 확보했던 두 번째 주소에 데이터를 할당한다.
●변수를 선언하면 데이터가 담길 공간을 확보하고 , 확보된 데이터의 주소값을 가지고 변수명과 매칭시키는 선언과정까지 동일하나 , 할당 과정에서 차이가 있다.

⚡️ 자바스크립트 속성(Property) 과 메소드 (Method)

Array 배열 내부에 있는 값은 '요소'
Object 객체 내부에 있는 값은 '속성'

● 배열의 요소처럼 객체의 속성도 모든 형태의 자료형을 가질수 있다.

● 객체의 속성 중 함수 자료형인 속성을 메소드(Method)라고 부른다.

const person = {
		name:'킹왕짱',
		favorite : function(money) {
             console.log(this.name + '은(는) ' +Thing +              '을(를) 좋아합니다.'
			}
		};
person.favoirte ('money');

●코드에서 객체 Person은 name 이라는 속성과 favorite라는 속성이 있다.
●favorite 라는 속성 함수 자료형이므로 favorite() 메소드라고 부른다.
● this.name 은 메소드 내에서 자기 자신이 가진 속성을 출력하기 위해서 사용된다.
● 같은 Person 객체에서 존재하는 name을 불러온다
● 코드 실행을 하게 되면 '킹왕짱은 money를 좋아합니다' 문장이 출력된다.

자바스크립트 연산자 typeof

typeof는 변수의 데이터 타입을 반환하는 연산자이다.

주의 : 참조형 데이터인 배열과 객체를 구분하지 못한다.
❗️용법
typeof variable
typeof (variable)
❗️반환되는 값
undefined : 변수가 정의되지 않았거나 값이 없을 때
number : 데이터 타입이 수일 때
string : 데이터 타입이 문자열일 때
boolean : 데이터 타입이 불리언일 때
function : 변수의 값이 함수 일 때
symbol : 데이터 타입이 심볼일 때
object : 배열이거나 객체일 때 (사실 배열도 객체이다. 그래서 배열인지 객체인지 구분해주는 방법은 따로있다.)

⚡️ 엄밀한 비교 (===과 !== 의 필요성)

자바스크립트 : ' ==' 와 '==='는 다르다!

'===' 는 비교하는 변수의 값 뿐만 아니라 변수의 형식이 동일하지 않은 경우도 확인한다.
즉, '==='는 변수 유형을 고려한다.
반면 , '==' 는 변수값을 기반으로 유형을 수정한다.

profile
프론트엔드 공부중

0개의 댓글