반응형
Web Worker 란? 자바스크립트는 싱글 스레드 언어입니다. 아래와 같이 작업 1과 작업 2가 있을 때, 자바스크립트는 작업 1을 모두 마친 뒤에 작업 2를 할 수가 있습니다. // 작업 1 let result = 0; for(let i = 0; i < 9999999999; i++) { result += i; } alert(result); // 작업 2 // do something 하지만 이런 방대한 계산을 처리하거나, 많은 브라우저에 부담을 주는 작업이 있을 때, Web Worker를 사용하면 주 메인 스레드가 아닌 백그라운드 스레드에서 작업을 할 수 있습니다. Web Worker 사용하기 index.html calculate calculate(use worker) 배경색 변경하기 js/app.js..
자바스크립트에 Set 문법이 있습니다. 자바스크립트에서 값을 저장할 때, 배열이나 객체를 많이 사용하는데 ES6 이후 부터 Set이 추가되었습니다. 기존 배열과 차이점이 뭔지 Set에 대해서 알아보도록 하겠습니다. Set 이란? 고유한 값을 저장하는 집합입니다. 값의 중복을 허용하지 않고 Index가 없다는 점이 배열과의 차이점입니다. Set 사용법 const mySet = new Set(); const mySet2 = new Set([1, 2, 3, 4, 5]); 데이터 추가 / 삭제 / 값 존재 여부 const mySet = new Set(); // 값 추가 mySet.add(1); mySet.add(2); mySet.add(3); mySet.add(1); // nope // 값 제거 mySet.de..
파일 업로드 구현할 때, input file 태그에서 파일을 입력받고 파일 업로드를 하고 FormData에 파일을 넣고 axios post 메서드를 이용해서 파일 전송을 할 수 있습니다. 파일 업로드 예시 파일 업로드 const uploadBtn = document.getElementById('uploadBtn'); uploadBtn.addEventListener('click', () => { const fileInput = document.getElementById('fileInput'); const file = fileInput.files; const formData = new FormData(); forData.append('file', file); cosnt response = axios.post..
자바스크립트에서는 undefined 와 null 개념이 있습니다. 언뜻 보면 둘다 비어있는, 없다라는 느낌의 친구들인데, 어떤 차이점이 있는지 알아보도록 하겠습니다. 둘다 값이 없거나, 정의 되지 않는 상태를 뜻합니다. Boolean 으로 표현하면 false 입니다. undefined 변수 또는 인수를 선언 후 값을 할당하지 않으면 undefined가 됩니다. 숫자적 표현하면 NaN 입니다. undefined + 12 // NaN null 의도적으로 비어있을 표현하는 값입니다. 숫자적으로 표현하면 0에 가깝습니다. null + 12 // 12
자바스크립트에서 객체를 합치는 방법 두가지에 대해서 말씀드리려고 합니다. Object.assign 함수를 이용하는 방법과 자바스크립트 Spread 연산자인 전개 연산자를 사용하는 방법이 있습니다. 두가지 방법 사용법과 공통점과 차이점에 대해서 알아보도록 하겠습니다. 사용법 1. Object.assign 이용하기 const target = { name: 'superman' }; const source = { age: 20 }; const result = Object.assign(target, source); // {name: 'superman', age: 20} 2. Spread 연산자 이용 하기 const target = { name: 'batman' }; const source = { age: 21 }..
조건에 따라서 객체의 프로퍼티를 추가하고 싶을 때가 있습니다. 특정 조건일 경우에만 { name: 'superman' } 을 추가할 때 어떻게 코딩하면 좋은지 한번 알아보도록 하겠습니다. 고전적인 방법 if문을 통해서 프로퍼티를 생성하고 값을 넣는 방법이 있습니다. var isCondition = true; var person = { age: 20 }; if (isCondition) { person.name = 'superman'; } 삼항 연산자 이용하기 객체에 삼항연산자를 이용해서 프로퍼티를 추가할 수 있습니다. var isCondition = true; var person = { age: 20, ...(isCondition ? { name : 'superman' } : {}) }; 논리 연산자 ( ..
아래와 같이 클릭 이벤트를 만들어서 사용하고 있었습니다. 하지만, 드래그할 때도 아래와 같이 클릭 이벤트가 발생하였습니다. 저는 단지 드래그 이후 복사를 하고 싶었는데, 클릭 이벤트를 발생시키고 싶지 않았습니다. const div = document.querySelector('div'); div.addEventListener('click', () => { alert('click'); }); 클릭 이벤트 방지 시키는 방법 아래와 같이 mousedown, mousemove 이벤트를 이용해서 동작이 드래그인지 판단합니다. 그 이후 mouseup 이벤트에서 click 이벤트 로직을 실행시킵니다. const div = document.querySelector('div'); let isDrag; div.addEve..
a태그를 이용해서 다운로드할 수 있는 방법 두 가지에 대해서 알아보도록 하겠습니다. a 태그 download 속성 이용하기 a태그는 해당 url로 이동하거나, 새 탭을 열 수 있습니다. 하지만 download 속성을 사용하면 해당 url의 파일을 다운로드할 수 있습니다. download 값을 넣게 되면 해당 이름으로 파일 다운로드를 할 수 있습니다. 다운로드 단 주의해야할점이 있습니다. 동일 출처 정책에 의해서 다운로드 파일의 경로가 현재 페이지의 url과 동일해야 다운로드가 가능합니다. clickEvent를 이용해서 다운로드하기 다운로드의 파일 경로가 다르다면 a tag에 click 이벤트를 이용해서 다운로드할 수 있습니다. 아래와 같은 방법으로 파일 다운로드를 할 수 있습니다. 다운로드 const c..
자바스크립트에서 문자열로 변경하는 방법이 여러가지 있습니다. 그 중 4가지를 소개 시켜드리겠습니다. String() String 생성자를 이용해서 문자열 변경할 수 있습니다. const num = 123; const obj = { name: 'superman' }; const arr = ['superman', 'batman'] const str = String(num); // '123' const str2 = String(obj); // [object Object] const str3 = String(arr); // superman,batman .toString() toString 메서드를 이용해서 문자열로 변경할 수 있습니다. const num = 456; const obj = { name: 'supe..
자바스크립트에서 문자열을 숫자로 변경할 수 있습니다. parseInt 함수를 사용하거나, Number 생성자를 이용하는 방법이 있습니다. parseInt와 Number를 사용하면 간단하게 문자열을 숫자로 변경할 수 있지만, 몇 가지 차이점이 있기 때문에 주의하셔야 합니다. 기본사용법 const str = '100'; parseInt(str); // 100 Number(str); // 100 뒤에 문자가 들어간 숫자 const str2 = '100px'; parseInt(str2); // 100 Number(str2); // NaN 앞에 문자가 들어간 숫자 const str3 = '약300'; parseInt(str3) //NaN Number(str3) // NaN 공백이 들어간 숫자 const str4 ..