728x90
728x90
자바스크립트에서는 숫자를 표현하는데 한계가 있다. Number로 수를 표현할 땐 2^53 - 1 이상의 수를 안정적으로 표현하기 어렵다. 때문에 이보다 큰 숫자를 표현할 때는 BigInt로 표현한다. const num = 123456789; const BigIntNum = BigInt(123456798789); // 또는 BigInt("123456798789"); const BigIntNumN = 123456798456n; console.log(typeof num, typeof BigIntNum,typeof BigIntNumN); // number bigint bigint BigInt와 Number 타입의 계산은 에러가 발생한다. const num = 132; const bigNum = 456n; con..
배열을 랜덤으로 섞어야 하는 알고리즘의 구현을 해보기로 했다. 조사결과 피셔-예이츠 셔플이라는 알고리즘 방법을 알게되었고, 이를 자바스크립트로 구현하기로 하였다. 조건은 다음과 같이 설정하였다. inputs : 임의의 길이를 가진 배열 arr, 임의의 배열 arr의 길이 n output : 임의의 배열 arr이 무작위로 섞인 새로운 배열 shuffledArr 실제 구현은 다음과 같이 하였다. const shuffle = (arr, n) => { const shuffledArr = [...arr]; for(let i = 0; i < n - 1; i++) { // i ≤ < n인 임의의 정수 (최소값이 i, 최대값이 n - 1) const randomIdx = Math.floor(Math.random() *..
가장 먼저, console.time을 이용할 수 있다. console.time과 console.timeEnd 사이의 시간 차이를 출력할 수 있다. 인자로 같은 문자열을 넣으면, 그 사이에서 실행된 코드들이 얼마만큼의 시간동안 실행되었는지 콘솔로 확인할 수 있다. 그 사이에서 console.timeLog를 사용하면 콘솔 코드가 실행된 순간에 시간이 얼마나 지났는지도 확인할 수 있다. const checker = () => { for(let i = 0; i for of > for 순으로 빠른 성능을 보여주었다. 🍭 react native에서는 위의 코드 중에서 performance.now()가 유일하게 작동하였다. JS 벤치마킹 라이브러리로 benchmark를 사용할 수도 있다. https://www.npm..
NPM에서 라이브러리를 설치받는 일은 매우 빈번했지만, 내가 실제로 NPM에 라이브러리를 배포하는 경험은 없었다.NPM은 개인이나 팀으로 유료 요금제도 제공하여 private하게 패키지를 관리할 수 있는 기능도 제공하고 있기에, 앞으로 사용할 일이 있을 것이라 생각하고 이번에 테스트로 배포를 진행해보았다.https://www.npmjs.com npmBring the best of open source to you, your team, and your company Relied upon by more than 11 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and saf..
ES6부터 자바스크립트에서도 class 문법이 지원된다. 클래스는 객체를 생성하는 탬플릿으로 재사용할 수 있고, 내부의 변수와 메서드를 추상화할 수 있다. class 사용하기 // class 표현식 const Data = class { constructor(name) { this.name = name; } get name() { return "이름은 " + this._name + "입니다."; } set name(name) { if (name.length
제네레이터 함수는 ES6부터 지원되는 자바스크립트의 기능이다. 제네레이터 함수를 사용하면, 실행한 함수를 중간에 중단(pause)한 뒤 다시 재개(resumed)할 수 있다. 제네레이터 함수가 사용되는 대표적인 예로는 redux saga가 있다. 중간 중간에 중단점이 있음으로써, 디버깅에 큰 도움이 된다. const generator = function* () { console.log("1st"); yield; console.log("2nd"); yield; console.log("3rd"); yield 3; }; generator genetator 함수는 위와같이 function*() {} 의 형태로 작성할 수 있다. 기존의 함수 선언식에 *을 붙여준 모양새이다. yield는 단순히 표현하면 중단점으로..