⚡️ 자바스크립트 '원시 자료형'과 '자료 참조형'
● 원시 자료형 (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 variable
typeof (variable)
❗️반환되는 값
undefined : 변수가 정의되지 않았거나 값이 없을 때
number : 데이터 타입이 수일 때
string : 데이터 타입이 문자열일 때
boolean : 데이터 타입이 불리언일 때
function : 변수의 값이 함수 일 때
symbol : 데이터 타입이 심볼일 때
object : 배열이거나 객체일 때 (사실 배열도 객체이다. 그래서 배열인지 객체인지 구분해주는 방법은 따로있다.)
자바스크립트 : ' ==' 와 '==='는 다르다!
'===' 는 비교하는 변수의 값 뿐만 아니라 변수의 형식이 동일하지 않은 경우도 확인한다.
즉, '==='는 변수 유형을 고려한다.
반면 , '==' 는 변수값을 기반으로 유형을 수정한다.