| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 카카오 소셜로그인
- 객체
- nodemailer
- 자바스크립트
- Mongoose
- 참조에 의한 객체 복사
- 위크셋
- TypeScript
- MongoDB
- JavaScript
- 화살표 함수
- JSON.parse
- 구조 분해 할당
- 로그스태시
- context switch
- javacript
- nest
- 카카오로그인
- 위크맵
- Map
- DB
- logstash
- AGGREGATE
- nextjs
- 이메일 전송
- react-slick
- JSON.stringify
- nestjs
- 캐러셀
- 중첩 구조 분해
- Today
- Total
목록JavaScript (12)
뚜sh뚜sh
나는 인풋 창에 이메일을 입력하면 입력한 이메일로 파일이 자동 전송되는 기능을 만들어야 했다 찾아보다가 nodemailer라는 모듈을 사용하기로 결정했다! 1. 먼저 nodemailer를 설치했다 yarn add nodemailer 2. gmail을 사용하기 위해 필요한 설정들을 해주었다 Google 계정 관리에 있는 보안 탭에 들어간 후 2단계 인증 사용하기! 앱 비밀번호를 생성하기! (이 부분을 위해 위에서 2단계 인증을 사용함) 3. pages/api/email.js 파일을 생성한 후, 아래 코드를 작성하기! - 나는 public 폴더 안에 첨부파일들을 보관했다 export default async function handler(req, res) { const nodemailer = require(..
JSON.stringify - JSON(JavaScript Object Notation) : 값이나 객체를 나타내주는 범용 포맷, RFC 4627 표준에 정의되어 있음 - 본래 자바스크립트에서 사용할 목적으로 만들어진 포맷이나 다른 언어에서 데이터 교환 목적으로 사용하는 경우도 많음 - 순환 참조가 있으면 원하는 대로 객체를 문자열로 바꿀 수 없음 JSON.stringify : 객체를 JSON으로 바꿔줌 JSON.parse : JSON을 객체로 바꿔줌 - JSON으로 인코딩된 객체는 일반 객체와 다른 특징을 보임 문자열은 큰따옴표로 감싸야 함, JSON에선 작은따옴표나 백틱을 사용할 수 없음 객체 프로퍼티 이름은 큰따옴표로 감싸야 함 replacer로 원하는 프로퍼티만 직렬화하기 - value : 인코딩..
Object.keys, values, entries - 일반 객체에는 다음과 같은 메서드를 사용할 수 있음 Object.keys(obj) : 객체의 키만 담은 배열을 반환함 Object.values(obj) : 객체의 값만 담은 배열을 반환함 Object.entries(obj) : [키, 값] 쌍을 담은 배열을 반환함 Map, Set, Array 전용 메서드와 일반 객체용 메서드의 차이를 비교해보자 맵 객체 호출 문법 map.keys() Object.keys(obj) ( obj.keys() 아님) 반환 값 iterable 객체 '진짜' 배열 객체 변환하기 - 객체에는 map, filter 같은 배열 전용 메서드를 사용할 수 없음 - 하지만 Object.entries와 Object.fromEntries 를..
위크맵 - 맵과 위크맵의 첫 번째 차이는 위크맵의 키가 반드시 객체여야 한다는 점임 - 원시값은 위크맵의 키가 될 수 없음 - 맵과 위크맵의 두 번째 차이는 위크맵은 반복 작업과 keys(), values(), entries() 메서드를 지원하지 않음, 따라서 위크맵에선 키나 값 전체를 얻는 게 불가능 - 이렇게 적은 메서드만 제공하는 이유는 가바지 컬렉션의 동작 방식 때문(동작 시점을 정확히 알 수 없어서) let weakMap = new WeakMap(); let obj = {}; weakMap.set(obj, "ok"); //정상적으로 동작합니다(객체 키). // 문자열("test")은 키로 사용할 수 없습니다. weakMap.set("test", "Whoops"); // Error: Invalid..
splice - 첫 번째 매개변수는 조작을 가할 첫 번째 요소를 가리키는 인덱스임 - 두 번째 매개변수는 deleteCount로, 제거하고자 하는 요소의 개수를 나타냄 - elem1, ..., elemN은 배열에 추가할 요소를 나타냄 arr.splice(index[, deleteCount, elem1, ..., elemN]) slice - start 인덱스부터 (end를 제외한) end 인덱스까지의 요소를 복사한 새로운 배열을 반환함 - arr.slice()는 인수를 하나도 넘기지 않고 호출하여 arr의 복사본을 만들 수 있음 arr.slice([start], [end]) concat - arr.concat은 기존 배열의 요소를 사용해 새로운 배열을 만들거나 기존 배열에 요소를 추가하고자 할 때 사용함 ..
모든 문자열은 UTF-16을 사용해 인코딩됨 따옴표 - 문자열은 작은 따옴표나, 큰 따옴표, 백틱으로 감쌀 수 있음 - 템플릿 리터럴 : 표현식을 ${...}로 감싸고 이를 백틱으로 감ㅅ싼 문자열 중간에 넣어주면 해당 표현식을 문자열 중간에 쉽게 삽입할 수 있음 - 백틱을 사용하면 문자열을 여러 줄에 걸쳐 작성할 수도 있음 특수 기호 - '줄 바꿈 문자'라 불리는 특수기호 \n을 사용하면 작은 따옴표나 큰 따옴표로도 여러 줄 문자열을 만들 수 있음 - 문자열 내의 따옴표를 사용하기 위해서는 \' 의 형태로 사용해야 함 - 역슬래시 \를 보여주려면 \\ 의 형태로 사용해야 함 문자열의 길이 - length 프로퍼티엔 문자열의 길이가 저장됨 - length는 함수가 아니고, 숫자가 저장되는 프로퍼티라서 뒤에..
- 자바스크립트는 객체 프로퍼티 키로 오직 문자형과 심볼형만을 허용함 - Ruby 등의 언어에서 사용되는 '심볼'과는 다름 - 심볼형 값은 다른 자료형으로 암시적 형 변환(자동 형 변환)되지 않음 심볼 - '심볼(symbol)'은 유일한 식별자를 만들고 싶을 때 사용함 - Symbol() 을 사용하면 심볼값을 만들 수 있음 // id는 새로운 심볼이 됩니다. let id = Symbol(); - 심볼을 만들 때 심볼 이름이라 불리는 설명을 붙일 수도 있음 - 심볼 이름은 디버깅 시 아주 유용함 - 설명이 동일한 심볼을 여러 개 만들어도 각 심볼값은 다름 - 설명은 어떤 것에도 영향을 주지 않는 이름표 역할만을 함 // 심볼 id에는 "id"라는 설명이 붙습니다. let id = Symbol("id"); ..
참조에 의한 객체 복사 - 객체와 원시 타입의 근본적인 차이 중 하나는 객체는 '참조에 의해' 저장되고 복사된다는 것이고 원시값(문자열, 숫자, 불린 값)은 '값 그대로' 저장,할당되고 복사됨 객체의 동작 방식 let user = { name: "John" }; - 변수엔 객체가 그대로 저장되는 것이 아니라, 객체가 저장되어 있는 '메모리 주소'인 객체에 대한 '참조 값'이 저장됨 - 객체는 메모리 내 어딘가에 저장되고, 변수 user엔 객체를 '참조'할 수 있는 값이 저장됨 - 따라서 객체가 할당된 변수를 복사할 땐 객체의 참조 값이 복사되고 객체는 복사되지 않음 객체 복사, 병합과 Object.assign Object.assign(dest, [src1, src2, src3...]) - 첫 번째 인수 ..
객체 - 객체는 중괄호 {...} 를 이용해 만들 수 있음 - 중괄호에는 '키: 값' 쌍으로 구성된 프로퍼티를 여러 개 넣을 수 있는데 키에는 문자형, 값에는 모든 자료형이 허용됨 빈 객체를 만드는 방법 - 객체 리터럴 : 중괄호를 이용해 객체를 선언하는 것 let user = new Object(); // '객체 생성자' 문법 let user = {}; // '객체 리터럴' 문법 리터럴과 프로퍼티 - 프로퍼티 키는 프로퍼티 '이름' 혹은 '식별자'라고도 부름 - 여러 단어를 조합해 프로퍼티 이름을 만든 경우엔 프로퍼티 이름을 따옴표로 묶어줘야 함 프로퍼티 삭제 delete user.age; 상수 객체는 수정될 수 있음 - const는 user의 값을 고정하지만, 그 내용은 고정하지 않음 const us..