본문 바로가기
[js] 자바스크립트 debugger 활용 자바스크립트에서 디버깅시 debugger 기능을 활용할 수 있습니다. debugger debugger문을 삽입한 시점이 breakpoint가 되어 디버깅을 할 수 있음 Call Stack 내역을 통해 호출 스택의 진행 순서를 알 수 있음 실행 흐름을 따라가면서 코드를 체크하여 검증할 수 있음 debugger 코드 사용 debugger; 라고 코드 중간에 삽입하여 사용하면 debugger 실행 시점일때 개발자 도구가 source로 바뀌면서 화면이 멈춥니다. debugger; 사용 화면 디버깅 버튼을 누르며 한줄씩 코드를 실행드가 실행해보면 각 변수에 할당되는 값이 우측에 표시되기 때문에 디버깅을 위해 console이나 alert로 값을 일일이 찍어서 확인할 필요가 없습니다. 오른쪽에 도돌이표처럼 생긴 버튼..
[js] 자바스크립트 함수 선언과 함수 호출 자바스크립트 함수와 함수 호출에 관한 설명입니다. 함수 선언 코드 형식1 es6 함수 문법: 화살표 함수 아래 함수에서 { } 는 객체가 아니라 블럭 객체를 리턴할때는 바디를 ( ) 감싸 주어야 함 -> const add = () => ({ ... }) const add = () => a+b; //함수 선언 //const add = () => {return a+b} 위의 함수와 같음 //const add = () => ({a+b}) 객체를 리턴할때는 바디를 ( ) 감싸 주어야 함 코드 형식2 매개변수를 넣어 다양한 함수 활용 가능 function cal(func,a,b) { //함수 선언 return func(a,b) //명령 } //conts cal = (func,a,b) => func(a,b) 와 위..
[js] onclick 이벤트 링크 넣기 onclick 이벤트를 이용해 링크를 넣는 방법입니다. html에서 링크를 연결할 때는 주로 를 연결하는데 다른 방법으로 태그에 onclick 이벤트를 걸어 링크를 삽입할 수 있습니다. onclick 이벤트 링크 넣기 onclick="location.href='';" onclick 이벤트 링크 예제 ...
[js] html 이미지 저장하기 기능 구현 (ft. html2canvas) html 라이브러리를 통해 이미지 저장하기 기능입니다. html2canvas html을 canvas로 변환하여 캡처된 화면을 이미지 저장해주는 라이브러리 입니다. https://www.npmjs.com/package/html2canvas html2canvas Screenshots with JavaScript. Latest version: 1.4.1, last published: 2 months ago. Start using html2canvas in your project by running `npm i html2canvas`. There are 1381 other projects in the npm registry using html2canvas. www.npmjs.com html2canvas 적용 코..
[js] 단어 filtering 다중 단어 filtering (ft. includes, some) 원하는 단어 또는 다중 단어 한번에 필터링하기 입니다. 배열 안에서 특정 단어 또는 text가 들어간 요소만 추출하거나 제외시키는 작업이 필요할 경우 사용합니다. filtering에 자바스크립트의 includes와 some 메소드를 사용하여 구현합니다. includes는 true, false를 반환합니다. some은 한가지라도 참일 때 true를 반환하고 빈 배열이면 false를 반환합니다. 단어 필터링 배열 안에 "AA"가 들어가는 단어를 필터링할 때 Array.filter(el => el.includes('AA')) Array.filter(el => el.includes('AA')).map(el => {el}) 배열 안에 "AA"가 들어가는 단어만 빼고 필터링 할때 Array.filter(el => ..
[js] 반응형 이미지 맵 구현 (ft. image-map 라이브러리) js 또는 react에서 라이브러리를 이용해 반응형 이미지 맵을 구현합니다. react에서 resposive image map 구현을 시도할때 가장 유명한 라이브러리는 jQuery를 이용한 rwdimagemap 라이브러리인데 react에서 jQuery 을 설치하고 싶지도 않았고, 설치하였구나 작동이 안되고 오류 메시지가 출현하였습니다. 그래서 react에서 할 수 있는 다른 javascript responsive image map 라이브러리를 찾았습니다. 반응형 이미지 맵 구현 하기 구현 화면 image-map 라이브러리 image-map 이라는 라이브러리고 구글에서 image-map을 검색하여 npmjs 사이트에 가면 자세한 자료를 볼 수 있습니다. image-map 라이브러리 사용법 image 좌표 ..
[js] 두가지 배열 합치기, 중복되는 요소 찾기 두가지 배열 합치기(배열 합집합) 배열 합치기 예시 전개 연산자 spread operator(...)를 이용해 두 배열을 그대로 합칩니다. 여기서 중복된 요소를 제거하기 위해 new Set으로 한번 묶어줍니다. let arr1 =[1,2,3,9] let arr2=[2,4,6,9] let newArr = [...arr1, ...arr2] console.log([...new Set(newArr)]) //결과 (6) [1, 2, 3, 9, 4, 6] 두가지 배열 중복되는 값 찾기(배열 교집합) 배열 중복되는 요소 찾기 예시 filter와 includes를 이용하여 중복되는 값을 찾을 수 있습니다. let arr1 =[1,2,3,9] let arr2=[2,4,6,9] let newArr = [...arr1, ...
[js] find includes 차이 array에서 사용하는 메소드 find()와 includes()의 비교입니다. array.find() find() 메서드는 주어진 함수를 만족하는 첫 번째 요소의 값을 반환합니다. 그런 요소가 없다면 undefinded를 반환합니다. 찾은 요소의 값 대신 인덱스를 반환하는 것은 findIndex() 요소의 위치를 찾고자 하는 경우에는 indexOf() 배열 요소가 해당 배열에 존재하는지 확인하고자 하는 경우에는 Array.prototype.indexOf() 또는 Array.prototype.includes()를 사용세요. array.find() 예시 const arr1 = [5, 30, 7, 120, 45]; const found = arr1.find(el => el > 10); console.log(f..
[js] 자바스크립트 코드 줄이는 방법 js 코드를 더 짧게 줄이는 몇가지 방법입니다. 자바스크립트 코드 축약 방법 1. or 조건문 (||) 2. and 조건문 (&&) 3. null, undefined, ' ' 체크 4. 삼항연산자 5. 숫자 형변환 1. or 조건문 (||) || 대신 includes()를 사용하면 끝없이 긴 조건문을 짧게 줄일 수 있습니다. before if (a === 'hi' || a === 'hello' || a === 'hallo') { code... } after if (['hi', 'hello', 'hallo'].includes(a)) { code... } 2. and 조건문 (&&) ?. 연산자인 optional chaining operator를 사용하여 객체의 속성값을 접근합니다. 속성 값이 없을 경우 u..
[js] button submit 막기 (ft. form) button의 submit 방지하는 방법입니다. form 태그에서 내에 위치하는 button은 클릭 시 항상 onSubmit 속성의 함수를 실행하는데요. button에 뒤로 가기 또는 취소의 기능을 원할때는 onSubmit 기능을 막아야 합니다. button submit 방지 button type 속성을 button으로 설정합니다. 버튼 form 태그 안의 button 사용법 저장 //submit 실행 취소 //submit 방지
[js] 이미지 특정 위치 클릭시 이벤트 처리 (ft. 특정 좌표 area, map) 이미지에서 특정 좌표 클릭시 이벤트 구현입니다. 태그는 이미지맵을 만드는 태그입니다. jpg, png, svg 와 같은 이미지에 링크를 걸어주어 화면 이동을 가능하게 합니다. 많이 사용할 일은 없지만 복잡한 지도같은 이미지에 주요 사용됩니다. 과 태그를 이용하여 특정 좌표에 영역을 지정하고 클릭 이벤트를 걸 수 있습니다. image map 태그 예제 image 태그의 usemap 의 이름과 map 태그의 name을 동일 map은 area 요소를 포함 area에서 shape(영역 모양)을 정의(rect(사각형), circle(원형), poly(다각형), default(기본값으로 전체 영역)의 속성 값) coords 좌표 위치 지정(x1, y1, x2, y 2가 속성 값으로 사각형의 왼쪽 위 모서리와 오른쪽..
[js] 자바스크립트 import , export 개념 import, exprot의 가져오기, 내보내기 개념입니다. 자바스크립트의 import, export라는 키워드를 통해서 가져오기, 내보내기를 실행합니다. import 사용 예제 1 npm install로 node module 설치 후 node_modules 폴더 안의 lodash 패키지를 _라는 이름으로 가지고 와서 main.js에서 활용을 하겠다는 선언입니다. main.js import _ from 'lodash' //node_modules 폴더에서 가져오기 import 사용 예제 2 - 상대 경로로 import 상대 경로를 통해서 외부에서 특정한 자바스크립트 파일(getToday.js)의 getToday 함수를 가져옵니다. main.js import getToday from './getToday' ..
[js] object의 key name을 함수 parameter로 받아 바꾸는 방법 함수 argument로 부터 값을 받아 객체 key 이름을 지정하는 방법입니다. 적용 전 예시 fnName = (type) => { return { type: { fill: 'gray' } } } 적용 후 사용 후 key를 대가로로 묶어주시면 됩니다. fnName = (type) => { return { [type]: { fill: 'gray' } } }
[js] default parameter 디폴트 매개변수 (ft. es6) 자바스크립트 es6 default parameter 입니다. 매개변수 = 'x'로 default 값을 지정합니다. 매개변수가 없을 경우, undefined 일 경우 default 값을 사용합니다. function multiply(a, b = 1) { //디폴트 매개변수 사용 return a * b; } //위와 아래가 동일합니다. function multiply(a, b) { //디폴트 매개변수 사용안했을때 b = b || 1 return a * b; } default parameter 사용 예시 const multyply = (a, b=1) => a * b; multyply(5) //5 multyply(2,3) //6
[js] 배열인지 아닌지 확인하기 (ft. Array.isArray() ) 변수가 배열인지 아닌지를 확인하는 방법입니다. Array.isArray() 메서드는 가로 안의 인자가 array 인지를 판별합니다. array이면 true를 반환하고, 아니면 false를 반환합니다. Array.isArray() 예제 Array.isArray([1, 2, 3]); // true Array.isArray({foo: 123}); // false Array.isArray('foobar'); // false Array.isArray(undefined); // false 실무에서 실제 사용했던 코드 입니다. result에 데이터가 들어왔을 때만 실행하는 코드를 만들었습니다. result라는 변수가 초기값이 null이고 데이터가 채워지면 객체의 형태인데, 무슨 이유인지 어쩔때는 초기값이 null이 ..
[js] 비밀번호 영문 숫자 조합 8자리 이상, 영문 숫자 특수기호 조합 8자리 이상 체크 (ft. 정규식) 비밀번호 유효성 검사에 사용되는 정규식입니다. 비밀번호 영문 숫자 조합 8자리 이상 (정규식) let regPass = /^(?=.*[a-zA-Z])(?=.*[0-9]).{8,25}$/; if (!regPass.test(password)) alert("영문, 숫자 조합으로 8-20자리 입력해주세요.") 영문 숫자 특수기호 조합 8자리 이상 (정규식) let regPass = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,25}$/; if (!regPass.test(password)) alert("영문, 숫자, 특수기호 조합으로 8-20자리 이상 입력해주세요.") 영문, 숫자 포함 6자리 이상 let regPass1 = /^(?=.*[a-zA-Z])(?=.*[0-..
[js] 룰렛 라이브러리 (ft. 돌림판, roulette) 룰렛 라이브러러리 winwheel.js를 소개합니다. 게임 프로젝트에서 사용할 자바스크립트 룰렛 라이브러리를 찾다가 다양한 기능과 뷰를 적용할 수 있는 룰렛 라이브러리, winwheel.js를 소개합니다. http://dougtesting.net/home Home Welcome to the home of Winwheel.js! Winwheel.js is a feature packed JavaScript library that allows you to easily create spinning Prize Wheels on HTML5 canvas using highly configurable JavaScript classes. dougtesting.net
[js] 자바스크립트로 하이픈 제거하기 (ft. 생년월일, 전화번호) 생년월일 또는 전화번호, 날짜에 들어가는 하이픈을 자바스크립트로 제거하는 방법입니다. 자바스크립트로 하이픈 제거 str.replace(/-/g, "") 예제 const birth="1991-12-22" const newBirth = birth.replace(/-/g, "") //결과: 19911222
[js] 공튀기기 자바스크립트 구현 (ft. react) 캔버스를 이용하여 자바스크립트 또는 리액트로 공튀기기를 구현합니다. 구현 영상 react 코드 (자바스크립트 코드 삽입) import React, { useEffect } from 'react'; const Balls = () => { const onStart = () =>{ // 스크립트 로딩이 완료된 후부터 내용을 시작 const canvas = document.getElementById('canvas'); const ctx = canvas.getContext('2d'); canvas.width = window.innerWidth; canvas.height = window.innerHeight; class Ball{ constructor(x,y){ // ball의 기본 속성들을 정의 this.x = ..
[js] 자바스크립트 버튼 클릭 후 disabled 처리 (ft. react, css) 자바스크립트, 리액트를 이용해 button 클릭 후 disabled 처리 방법입니다. 자바스크립트 버튼 클릭 후 disabled 처리 html 버튼 javascript let btn = document.querySelector('.btn') btn.addEventListener('click', () => { btn.disabled = true btn.style.background = '#666' btn.style.color = '#fff' }) 화면보기 (result 클릭) react에서 버튼 클릭 후 disabled 처리 import React from 'react' const button = () => { const onDisabled = (e) => { //클릭시 버튼 disabled 처리 e.pr..
[js] TypeError: Cannot read property 'x' of undefined (ft. javascript, react) TypeError: Cannot read property 'x' of undefined 오류 해결입니다. 자바스크립트 또는 리액트에서 정말 자주 보게되는 오류 입니다. 어느 사이트에 의하면, Cannot read property 'x' of undefined, Cannot read property 'x' of null 이 자바스크립트의 오류 1위의 오류 문구 였습니다. 오류 메시지 Cannot read property 'x' of undefined api 비동기 처리로 데이터를 출력하면서 렌더링을 하는데 문제는 컴포넌트가 데이터가 나오기 전에 렌더링 되거나, value 자체가 없는 문제입니다. 오류 해결 문제가 되는 부분에 ?. 연산자를 이용하여 코드를 수정하면, 에러가 사라집니다. {!resultDat..
[js] alert, console.log 출력시 [object Object] 오류 해결 방법 alert 출력시 [object Object] 오류 해결 방법입니다. alert, console.log 출력시 [object Object] 오류 자바스크립트에서 json 형태의 data를 alert(data) 또는 console.log(data)로 출력시 [object Object] 라고 나오게 됩니다. alert, console.log 출력시 [object Object] 해결 방법 오류는 아니지는 이를 우리가 읽을 수 있는 형태로 출력하려면 json 형태에서 json.stringify() 메소드를 이용하여 객체를 json화 시켜야 합니다. alert(JSON.stringify(data)); console.log(JSON.stringify(data)); json.stringify() 자바스크립트 파일 내..
[js] 자바스크립트로 시간차 지연 출력 (ft. for문, setTimeout, react) 자바스크립트에서 시간차, 지연을 위한 구현 방법입니다. 자바스크립트를 이용하여 시간차를 두고 출력하는 방법은 setTimeout와 async를 이용한 방법이 있습니다. 여기서 데이터의 양이 많을 경우, for문과 map을 이용해 setTimeout 을 사용하는 방법이 좋습니다. for문, setTimeout 예제 1초 마다 0부터 4까지 시간차로 출력됩니다. const data = [1, 2, 3, 4, 5] for (let i = 0; i { console.log(i) }, i * 1000) } //결과 //0 //1 //2 //3 //4 map, for문, setTimeout 예제 데이터의 양이 많을 경우 map과 함께 이용하여 데..
[ts] Could not find a declaration file for module 'react' react에서 typescript를 설치하고 app.tsx 에서 router를 설치하는데 이런 오류가 나왔습니다. 오류 메시지 Could not find a declaration file for module 'react'. '/Users/inkijo/Documents/react-test/my-books/node_modules/react/index.js' implicitly has an 'any' type. If the 'react' package actually exposes this module, consider sending a pull request to amend 'https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react..
[js] 만 나이 계산하기 자바스크립트로 만나이를 계산합니다. 만 나이 계산하는 함수 (파라미터로 생년월일 넘겨줄때) export const gettingOriginalAge = (birth) => { //birth가 1990-03-05, string 형식 const today = new Date(); //현재 날짜 let age = today.getFullYear() - Number(birth.slice(0, 4)); let mon = (today.getMonth()+1) - Number(birth.slice(5, 7));//getMonth()는 0-11로 출력되므로 +1 if (mon < 0 || (mon === 0 && today.getDate() < Number(birth.slice(8, 10)))) { return age..
[js] day.js 사용법 (ft. 날짜, 시간 라이브러리, moment.js) 자바스크립트를 통해 날짜와 시간을 출력하는 라이브러리, day.js 입니다. 자바스크립트로 날짜와 시간을 출력할 경우, 직접 코드를 작성할 경우도 있지만, 라이브러리를 통해 직접 함수를 만드는 번거로움을 피할 수 있습니다. 과거에는 Moment.js을 많이 사용하였지만, 용량이 너무 많이 차지하여, 최근에는 Moment.js의 경량 버전인 day.js를 많이 사용하고 있습니다. day.js moment.js의 API 형식은 그대로 유지하면서 용량은 33배 가볍습니다. 사용법이 moment.js와 거의 같다고 보면 되기에 편하게 day.js로 갈아탈 수 있습니다. day.js 사이트 https://www.npmjs.com/package/dayjs dayjs 2KB immutable date time lib..
[js] 스크롤 이동, 스크롤 현재 위치 (ft. scrollTop, scrollIntoView) web 스크롤 API, window.scrollTo() 입니다. 모바일 웹뷰에서 페이지를 이동하거나, 컴포넌트를 교체할때마다 이전 페이지나 컴포넌트의 스크롤 위치가 유지될때 스크롤을 강제로 상위로 이동시킬때 사용합니다. clientHeight, scrollHeight, offsetHeight 차이 clientHeight: 요소의 내부 높이, 패딩 값은 포함, 스크롤바, 테두리, 마진은 제외 scrollHeight: 요소에 들어있는 컨텐츠의 전체 높이(스크롤 끝까지 내렸을때), 패딩과 테두리가 포함, 마진은 제외 offsetHeight: 요소의 높이입니다. 패딩, 스크롤 바, 테두리(Border)가 포함, 마진은 제외 scrollHeight > offsetHeight > clientHeight 스크롤 최상..
[js] set 객체 사용법 (ft. new Set 중복값 제거) Set 객체 es6 최신 문법의 중복을 제거한 값들의 집합입니다. 특정 요소 추가: add 특정 요소가 있는지 확인: has (boolean 값으로 반환) 특정 요소 제거: delete 모든 요소 제거: clear 요소의 개수 반환: size (배열의 length) set 객체 선언 let mySet = new Set(); set 객체 사용법 (MDN 문서 참조) let mySet = new Set(); mySet.add(1); // Set { 1 } mySet.add(3); // Set { 1, 3 } mySet.add(3); // Set { 1, 3 } mySet.add('text'); // Set { 1, 5, 'text' } let i = {a: 1, b: 2}; mySet.add(i); //결과..
반응형