언어/Javascript & Typescript 4

[JS] 얕은 복사 & 깊은 복사

지난 시간에는 변수에 객체가 저장된 주소를 할당하는 참조에 대해 알아보았다. 이 경우 여러 변수가 같은 객체를 가리키므로 어느 한 변수에서 객체를 수정하면 이를 참조하는 다른 변수에도 영향을 미친다.let a = {'id': 1};let b = a; // 참조 복사console.log(a === b); // truea.id = 2;console.log(b.id); // 2이번 시간에는 객체의 주소를 복사하는 것이 아닌 새로운 객체를 만드는 두가지 복사 방법에 대해 알아보도록 한다.얕은 복사(Shallow copy)얕은 복사를 하면 참조 복사와 달리 원본 객체와 다른 주소에 할당된 객체를 가리키게 된다. 다만 객체 내부의 속성들은 원본 객체와 같은 속성을 참조한다.let original = {list: [..

[JS] 복제, 참조 그리고 함수의 매개변수

복제변수 a, b가 정수(원시 데이터 타입)인 경우를 살펴보자. 아래는 변수 b에 변수 a의 값을 복제한다. 즉 a와 b가 가리키는 주소가 다르므로, b의 값을 변경해도 a의 값은 그대로이다. 원시 데이터 타입과 참조 데이터 타입let a = 1; // a는 원시 타입let b = a; // b에 a의 값 복제 (원시 타입)b = 2; // b의 값 변경console.log(a); // 1 (a의 값은 그대로)참조이번에는 변수 a, b가 객체 (참조 데이터 타입)인 경우를 살펴보자. b에 a를 할당하게 되면 b는 a와 동일한 객체를 참조한다. 즉 b의 값을 바꾸면 a의 값도 바뀐다.let a = {'id': 1}; // a는 객체(참조 타입)let b = a; ..

[JS] 자바스크립트의 데이터 타입

원시 데이터 타입객체가 아닌 데이터 타입을 원시 데이터 타입(primitive type)이라고 한다. 다음 데이터 타입들이 원시 데이터 타입이다.숫자문자열불리언(true/false)nullundefinedSymbol참조 데이터 타입 (객체)자바스크립트에서 참조 데이터 타입은 객체(Object)를 의미한다.변수에 직접 값을 저장하는 것이 아니라, 메모리에서 객체가 저장된 위치를 가리키는(reference) 값으로 할당되기 때문에 "참조(reference) 데이터 타입"이라고 한다.배열(array), 함수(function)도 객체의 일종이다.Wrapper 객체원시 데이터 타입이지만 데이터를 사용할때 편리한 기능을 객체지향적으로 제공하기 위해, 원시 데이터 타입을 객체처럼 다룰 수 있도록 하는 레퍼 객체(Wr..

[JS] 자바스크립트 표준입력, 정규표현식, 2차원 배열

Javascript 표준 입력 표준 스트림(standard streams) 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr) 3가지를 표준 스트림이라고 하며, 운영 체제에서 기본적으로 제공하는 추상화된 입출력 장치를 의미한다. 표준 입력(stdin): 프로그램으로 들어가는 데이터(보통 문자열) 스트림이다. 표준 입력 장치의 ID는 0이며 일반적으로는 키보드가 된다. 표준 출력(stdout): 출력을 위한 데이터 스트림이다. 표준 출력 장치의 ID는 1이며 일반적으로는 현재 쉘을 실행한 콘솔(console)이나 터미널(terminal)이 된다. 표준 에러(stderr): 에러를 위한 데이터 스트림이다. 표준 출력 장치의 ID는 2이며 일반적으로 표준 출력과 동일하다. 출처: 표준..