setTimeout에 시간을 0을 줘서 사용하는 경우가 있다. 이렇게 하면 아래와 같은 경우에 setTimeout을 적용한 3이 가장 마지막에 찍히는 것을 확인할 수 있다. console.log(1); console.log(2); setTimeout(()=> console.log(3), 0); console.log(4); console.log(5); // 1, 2, 4, 5, 3 setTimeout(callback, 0)을 사용하는 이유에 대해 공부하다가 좋은 블로그 글을 보아서 배운 내용을 가볍게 정리하고 블로그 주소를 남겨놓고자 한다. setTimeout에 시간을 0초로 주는데도 뒤늦게 실행되는 이유는 정리하자면 이런 식이다. 어떤 함수를 실행시킬때 발생하는 실행 컨텍스트는 자바스크립트 엔진의 콜스택..
쓰로틀링과 디바운싱 모두 함수 실행 요청이 연달아 들어오는 경우 과한 실행을 막기 위해 처리하는 로직이다. 쓰로틀링 throttling 일정한 시간마다, 또는 앞선 실행이 끝난 경우에만 함수가 실행되도록 하는 것. ex) 스크롤 스크롤을 내릴 때 어떤 함수가 실행되는 코드를 짜는 경우 함수가 수십번 실행될 수 있음 -> 일정한 시간마다 함수를 실행케 하면 요청을 줄일 수 있음 디바운싱 debouncing 함수 실행 요청 이후 일정 시간이 지나야 함수를 실행, 하지만 요청이 들어올 때 마다 계속 시간을 리셋해 결국 마지막 한 번만 함수가 실행되도록 함. ex) 검색 키워드 입력 후 엔터 없이도 검색결과를 보여주거나 할 때 키보드를 여러번 누르면 누를 때 마다 서버로 ajax요청 실행. -> n밀리초 후 서..
프로그레머스 Lv.2 피보나치 수 문제다. 피보나치 n번째 자리 수를 1234567로 나눈 나머지 값을 구하라는 문제였다 (n은 2 이상). 왜 나누어야 하는걸까? 힌트를 보니 n이 커질수록 리턴해야 하는 값도 커지고 47번째 피보나치 수는 2,971,215,073이라고 한다. 이 수가 32비트 정수(ex.int)의 범위를 넘고, 100,000번째 피보나치 수는 자릿수가 20,000을 넘겨 64비트 정수(ex.long)의 범위를 넘어 오버플로우가 난다고 되어있다. 그렇기 때문에 1234567로 나누어야 하고 사용법은 아래와 같다. F(n) % m = (F(n-1) + F(n-2)) % m = (F(n-1) % m + F(n-2) % m) % m 무슨 말인지 대충은 알겠는데 정확하게 모르겠는 사람도 있을거..
const arr = [[1,1,1,1],[2,2,2,2],[3,3,3,3]] let letArr = JSON.parse(JSON.stringify(arr)); console.log(arr===letArr) //false
10진수 -> 다른 진수 (변환할 10진수 숫자).toString(바꾸고싶은 진수) 10진수 숫자 부분은 변수에 담거나 괄호를 쳐 줘야 함 console.log((15).toString(2))//1111 let val = 10; console.log(val.toString(2))//1010 let val = 90; console.log(val.toString(16))//5a 다른 진수 -> 10진수 parseInt(변환할 숫자, 변환할 숫자의 진수) console.log(parseInt(101, 2)) //5
const arr = Array(26).fill().map((v, i)=>{return String.fromCharCode(i+97)}); console.log(arr) //['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] 아스키코드 숫자: 48~57 영문 대문자: 65~90 영문 소문자: 97~122