꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

자바스크립트 35

원시타입과 참조타입 (Primitive type & Reference type)

자바스크립트의 데이터 타입 자바스크립트의 데이터 타입으로 7가지가 있습니다. string, number, boolean, null, undefined, symbol, object가 있으며, 데이터 타입은 원시타입과 참조타입으로 구분할 수 있습니다. string, number, boolean, null, undefined, symbol이 원시타입에 해당하며, object는 참조타입에 해당됩니다. 원시타입과 참조타입의 차이점 이 둘의 차이점을 알기 위해서는 자바스크립트에서 데이터를 어떻게 관리하고 있는지에 대한 배경지식이 있어야 합니다. var a; // 변수 a 선언 a = 1; // 변수 a에 데이터 할당 var a = 1; // 변수 선언과 할당을 한 문장으로 표현 원시타입의 경우, 자바스크립트 엔진은..

타입이란

타입 자바스크립트의 모든 값은 데이터 타입을 갖습니다. 타입이란 자바스크립트 엔진, 개발자 모두에게 어떤 값을 다른 값과 분별할 수 있는, 고유한 내부 특성의 집합입니다. 예를 들어 자바스크립트 엔진과 개발자가 10(숫자)이란 값을 '10'(문자열)이란 값과 다르게 취급한다면 두 값은 타입이 서로 다릅니다. 숫자 10은 계산을 하려는 의도지만 문자열 10은 글을 쓰는 페이지에 출력할 문자열로 쓸 의도로 만든 값입니다. 이런 타입의 특성을 제대로 파악해두어야 자바스크립트의 암묵적 타입 변환과 같은 방법을 정확히 이해할 수 있습니다. 내장 타입 자바스크립트는 7가지 내장 타입이 있습니다. 그리고 그 내장 타입은 원시타입과 객체 타입으로 나뉘어집니다. 원시 타입 undefined boolean number s..

[프로그래머스] 삼각 달팽이

function solution(n) { let a = Array(n).fill().map((_, i) => Array(i + 1).fill()) let row = -1 let col = 0 let fill = 0 for (let i = n; i > 0; i -= 3) { a[++row][col] = ++fill for (let j = 0; j < i - 1; j++) a[++row][col] = ++fill for (let j = 0; j < i - 1; j++) a[row][++col] = ++fill for (let j = 0; j < i - 2; j++) a[--row][--col] = ++fill } return a.flat() } 직각 삼각형으로 이중 배열을 만들어 풉니다.

[프로그래머스] 오픈채팅방

function solution(record) { const answer = []; const users = {}; record.forEach(str => { const [state, userId, nickname] = str.split(' '); if (str[0] === 'E') { users[userId] = nickname; answer.push([userId, '님이 들어왔습니다.']); } else if (str[0] === 'L') { answer.push([userId, '님이 나갔습니다.']); } else { users[userId] = nickname; } }); return answer.map(([userId, stateStr]) => users[userId] + stateStr); }

currying이란

Currying은 1970년 Christopher Strachey가 Haskell Brooks Curry의 이름에서 착안하였습니다. 여러 개의 인자를 가진 함수를 호출할 경우, 파라미터의 수보다 적은 수의 파라미터를 인자로 받으면 누락된 파라미터를 인자로 받는 기법입니다. 함수 하나가 n개의 인자를 받는 과정을 n개의 함수로 각각의 인자를 받도록 합니다. 함수를 체인으로 계속 생성해 결과적으로 값을 처리하도록 하는 것이 그 본질입니다. 예를 들어보면, f(a, b, c)처럼 단일 호출로 처리하는 함수를 f(a)(b)(c)와 같이 각각의 인수가 호출 가능한 프로세스로 호출된 후 병합되도록 변환하는 것입니다. 화살표 함수로 예시를 들겠습니다. const sum = (a, b) => a + b; a와 b 매개..