[JS] Syntax | 13. Spread - 배열 또는 객체 분해하기
·
Language/JavaScript
JavaScript에서 배열은 call-by-reference입니다. 따라서, 배열을 담은 변수는 배열의 값들 자체가 아닌, 배열을 가리키는 주소값을 담고 있습니다. 때문에 배열을 담은 변수를 다른 변수에 할당하면, 주소값을 할당받아 같은 배열을 공유하게 됩니다.const lst1 = [1, 2, 3];const lst2 = lst1;lst1.push(4); // lst1에 4를 추가console.log(lst1); // [1, 2, 3, 4]console.log(lst2); // [1, 2, 3, 4]따라서 주소값을 공유하지 않는 완전히 새로운 배열로 복사하려면, 동일한 요소로 구성된 리스트를 새로 선언해야 합니다. 이 때 유용한 문법이 spread입니다. Spread를 사용하면 배열의 값을 펼쳐..
[JS] Syntax | 12. Arrow function
·
Language/JavaScript
Arrow function은 ES2015부터 새로 추가된 함수 선언 방식입니다. 기존의 function 예약어를 사용해 선언하던 함수를 다음과 같이 선언할 수 있습니다.// 이 함수와const func = function(arg) { return arg * 2;}// 이 함수는 동일합니다.const func = (arg) => { return arg * 2;}만약 받는 매개변수가 하나 뿐이라면, 매개변수의 괄호( )를 생략할 수 있습니다.const func = arg => { return arg * 2;}만약 함수 부분이 return 문 하나로만 구성되어 있다면, 함수 부분의 중괄호{ }도 생략할 수 있습니다.const func = (arg) => arg * 2;단, 객체를 반환할 때는 ..
[JS] Syntax | 11. rest parameter - 가변 변수 사용하기
·
Language/JavaScript
1. argumentargument는 함수에서 가변적인 매개변수들을 받아 접근할 때 사용할 수 있습니다. argument는 유사 리스트의 형태로 반환되어 리스트와 관련된 메소드를 사용할 수는 없습니다. 단, argument.length와 argument[0] 등의 인덱스 접근은 가능합니다.const func1 = (arg1, arg2) => { console.log(arg1); console.log(arg2);}func1(1); // 1, undefinedfunc1(1, 2); // 1, 2func1(1, 2, 3); // 1, 2 (3은 출력되지 않음)const func2 = (arg1, arg2) => { for (const arg of arguments){ ..
[JS] Syntax | 10. 병합연산자(??)
·
Language/JavaScript
JavaScript에서는 and(&&)와 or(||) 연산을 할 때 첫 번째 값에 무엇이 오느냐에 따라 출력값이 달라집니다.operand 1operand 2ANDORTruthyTruthy operand 2operand 1TruthyFalsyoperand 2operand 1FalsyTruthyoperand 1operand 2FalsyFalsyoperand 1operand 2그리고 이를 이용하여 특정 변수에 기본값을 지정하는 코드를 작성할 수도 있습니다.const perhapsNull = null;// perhapsNull이 false라면 'notNull'을, true라면 perhapsNull을 반환합니다.const value = perhapsNull || 'notNull';여기서 true / false 값..
[JS] CommonJS & ES에 대해서
·
Language/JavaScript
CommonJSCommonJS는 주로 Node.js 환경에서 사용되는 모듈 시스템의 표준입니다. 모듈 시스템을 도입하여 특정 함수나 오브젝트를 외부에서 사용할 수 있도록 모듈화 하였습니다.이 덕분에 모듈을 사용하려는 파일에서는 필요한 모듈만 선택적으로 불러와 사용할 수 있게 되었습니다.ESJavaScript를 다루다보면 es6 혹은 es 접두사가 붙은 용어를 볼 수 있습니다. 이 es는 ECMA Script의 약어로, ECMA에서 명시한 문서자료를 가리킵니다.ECMA?ECMA(또는 Ecma) international은 정보와 통신 시스템을 위한 국제적 표준화 기구입니다. JavaScript는 그 역사가 오래된 만큼, 시간이 지남에 따라 많은 부분이 수정되어 왔습니다. Ecma international은 ..
[C++] STL | 01. unordered
·
Language/C++
unordered 계열의 컨테이너들은 hash table을 이용한 key-value 데이터 구조로, 시간 복잡도 O(1)를 가집니다.unordered_mapKey-value 쌍을 저장하는 해시테이블입니다. 다음과 같이 선언할 수 있습니다.#include unordered_map um;unordered_set중복되지 않는 key값을 저장하는 해시테이블입니다. 다음과 같이 선언할 수 있습니다.#include unordered_set us;메소드메소드매개변수기능반환empty( ) map이 비어 있는지 확인비었다면 1, 아니면 0 (int)size( ) map의 크기 반환map 크기 (unsigned int)find(key)key : 찾을 key 값key에 해당하는 value 반환value만약 없다면, [map..
[C++] 표준 템플릿 라이브러리(STL)에 대해서
·
Language/C++
STL(Standard Template Library), 혹은 표준 템플릿 라이브러리는 C++에서 쉽게 사용할 수 있도록 여러가지 함수 혹은 기능들을 미리 만들어 모아놓은 라이브러리입니다. ※ C에서 필수적으로 사용하는 혹은 등도 라이브러리의 일종입니다. STL은 크게 컨테이너 / 반복자 / 알고리즘 / 함수자 네 가지 기능으로 이루어져 있습니다.1. 컨테이너 (Container)데이터를 저장하는 객체, 즉 데이터 구조를 다룹니다. 컨테이너는 표준 연속 컨테이너와 표준 연관 컨테이너로 구분됩니다. 표준 연속 컨테이너(Standard sequential container)는 순서가 있는 선형 구조를 포함하며, 표준 연관 컨테이너(Standard associative container)는 key-valu..
[C++] C++에 대해서
·
Language/C++
C++는 AT&T 벨 연구소의 컴퓨터 과학자 비야네 스트롭스트룹이 C 언어를 기반으로 개발한 언어입니다. 그 전신은 C with classes로, 여기에 함수 이름 / 연산자 오버로딩 / 참조 등의 다양한 기능을 추가하여 C++가 되었습니다. C++는 C를 바탕으로 개발되었기 때문에 C와 유사한 점이 많지만, 절차지향 프로그래밍 언어인 C와는 다르게 객체지향 프로그래밍과 일반화 프로그래밍 또한 가능하다는 특징이 있습니다. 따라서 C와는 아주 다른 방식으로 코드를 작성할 수 있습니다.