[TIL] 타입과 자료형 😮

김윤혜·2022년 11월 7일
0

키워드
변수(variable), 값(value), 데이터보관함, 특별보관함(heap주소_Reference), 주소(address), 정적.동적, 타입, 원시자료형(primitive data type), 참조자료형(reference data type),


TYPE

• 원시 자료형 : 1개의 데이터를 담는다.

- 객체가 아니면서 메소드를 갖지 않는 6가지 타입
- string, number, bigint, boolean, undefined, symbol, (null)
- ex. let Summer = 'Blueberry'; // 변수 Summer에 'Bluberry' 할당
- 변경은 불가능(immutable), 다른 데이터로 재할당은 가능(let으로 선언 시)
- 데이터에 따라 사이즈 조절 불가능(정적)

• 참조 자료형 : 여러개의 데이터를 담는다.

- object{}, array[], function(){}
- ex. let Summer = { Seed: 'Blueberry'; Collect: 'Sweetpea'; Festival: 'Luau' }; 
// 변수 Summer에 주소(address)를 할당하여 특별보관함(heap)에 데이터 저장. '변수에 할당된 데이터를 불러온다' => '변수에 할당된 주소를 참조하여 데이터를 불러온다'
- 데이터에 따라 사이즈 조절 가능(동적; dynamic)




종합퀴즈

  • 타입 간의 불린 비교
console.log('codestates' === 'codestates'); // true;
console.log(3.14 === 3.14); // true;
console.log([1,2,3] === [1,2,3]); // false;
console.log({ foo: 'bar' } === { foo: 'bar' }); // false;

* 참조 자료형의 ===(strict equality)는 '주소값'이 같은지를 확인

  • 원시 자료형이 어떤 함수의 매개변수일 때
1) let score = 80;
function doStuff(value) {
  value = 90;
}

doStuff(score) // undefined; 
console.log(score) // 80;



2) let score = 80;
function doStuff(value) {
  value = 90;
  return value;
}

doStuff(score) // 90; 
console.log(score) // 80;

1)번에서 함수값으로는 90이 출력될 줄 알았는데 undefined가 떴다. 처음에는 원시 자료형이 밑에 함수의 전달인자로 사용되어 아예 값을 출력하지 못하는 건가? 싶었는데 2)번에서 value를 출력하니 이번엔 제대로 90이 나왔다.



split()메소드와 배열

예전에는 배열(리스트&인덱스) 개념이 없었다. 띄어쓰기, 탭, 쉼표 등으로 데이터를 구분했고, 일례로 쉼표로 구분된 데이터 csv(comma-separated values)가 있다.

const str = 'The quick brown fox jumps over the lazy dog.';

// 특정 단어를 가져오고 싶을 때;
const words = str.split(' ');
console.log(words[3]); // fox


// 문자열을 배열로 변경;
const strCopy = str.split();
console.log(strCopy); // ["The quick brown fox jumps over the lazy dog."]

[?] 근데 어떤 필요에 의해서 문자열을 배열로 변경?

profile
본질에는 일치를, 비본질에는 관용을, 이 모든 것에 사랑을

0개의 댓글