본문 바로가기

개념/javaScript

(24)
[javaScript] arr.sort() 배열 정렬하기 💡 sort() 소개 🔹역할: 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환한다. 🔹생김새: arr.sort([비교함수]) 🔹특징: 비교함수를 인수로 전달하지 않으면 요소는 문자열로 취급되어 재정렬된다.* 배열 자체를 변경(mutable)한다. 재정렬된 배열을 반환하긴 하지만, mutable이기 때문에 원본 arr를 주로 사용한다. *기본 정렬 예시를 보려면 아래를 클릭하세요 더보기 유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다. 각각의 문자에 해당하는 숫자값이 정해져있는데, 비교함수를 지정하지 않으면 그 숫자값에 따라서 오ㅡㄹㅁ차순으로 정렬된다. const arr = [1,10,12,13,2,21,22,23,30,4,1000,-1,-10,-..
[javaScript] 재귀 함수와 메모리 사용량 간의 관계 📌 재귀함수란 재귀함수는 함수 내에서 자기 자신을 다시 호출하는 방법이다. 🤼‍♀️ 재귀 vs 반복문 재귀 반복문 장점 코드가 짧고 간결하다. 유지보수가 쉬워진다. 메모리가 절약된다. 속도가 상대적으로 빠르다. 단점 메모리 차지가 크다. (📌 아래에서 설명 예정) 깊이 제한이 있다. (엔진에 따라 다르지만, 십만까지는 보통 불가능) 속도가 상대적으로 느리다. 코드가 길고 복잡하다. 분기문이 복잡하게 얽혀있을 때는 재귀에 비해 크게 메모리가 절약되는 것은 아니다. 반복문 코드 function pow(x, n) { let result = 1; // 반복문을 돌면서 x를 n번 곱함 for (let i = 0; i < n; i++) { result *= x; } return result; } 재귀 코드 func..
[javaScript] fs모듈로 파일 내용 수정하기 코드스테이츠 서버 스프린트를 진행하다가, 로컬 파일을 수정해야 할일이 있어서 이리저리 하다가 알게된 사실을 정리해본다. 🧐 예제로 보기 // 파일을 바꿔주기 위한 작업 시작 const path = process.cwd() + '/statesairline/repository/flightList.js' fs.readFile(path,'utf-8',function(err, data){ //flighListh.js 파일을 읽는다. //📌 콜백의 data는 파일자체가 아니라, 읽어온 파일 내용이다. if (err) throw err; //파일 읽다가 에러났을때 핸들링 const regxp = new RegExp(`${flightList}`,'gm'); const result = data.replace(regxp,..
[javaScript] fs모듈, fs.readFile Node.js 내장모듈 살펴보기 node.js의 내장 모듈 목록 Node.js에서 파일 시스템 모듈 불러오기 fs모듈은 빌트인 모듈(built-in module)이므로, js파일에 require만 시켜주면 된다. 빌트인 모듈(built-in module)이란? 해당 프로그래밍 언어에서(이 경우는 Node.js에서) 공식적으로 제공하여 별도의 다운로드없이 사용가능한 모듈이다. const fs = require('fs'); // 파일 시스템 모듈을 불러옵니다 3rd-party 모듈 사용하기 3rd-party모듈이란? 해당 프로그래밍 언어에서(이 경우는 node.js에서) 공식적으로 제공하는 빌트인 모듈(built-in module)이 아닌 모든 외부 모듈을 말한다. npm install underscore ..
[javaScript] async/await 🔎async/await란 promise를 더욱 쉽게 사용하기 위한 문법이다. ☘️ async함수 async를 function앞에 적어주면 해당 함수는 항상 promise를 반환한다. promise가 아닌 값을 return 하게 짜더라고 resolve된 promise로 감싸 어떻게든 promise로 반환한다.(아래 참고) 함수 안에서 await를 사용할 수 있다. //코드1️⃣: async이용 async function f() { return 1; //promise가 아닌 값을 반환하게 되어있지만... } f().then((result)=>{console.log(result)}); //Promise { undefined } promise가 나온다. //1 //코드2️⃣: promise이용 const f =..
[javaScript] Promise란? + 관련 메서드들 🤔 Promise는 알 수 없는 미래를 설계한다. Promise는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타낸다. (...중략...) Promise는 프로미스가 생성된 시점에는 알려지지 않았을 수도 있는 값을 위한 대리자이다. -mdn 그러니까, 지금 당장은 수행의 결과를 알지 못하더라도, 호출하는 시점에 뭔가를 수행하고 그것을 수행한 결과값, 혹은 그걸 실패했을 때의 리턴값을 결정해주는 것이다. 여기서 주의할 것이"결과"이다. promise 작성할 때엔 어떤 결과가 나올지 알 수가 없다. 하지만 우리는 그 결과값을 때에따라 전달해야하고, 다음 행동까지 정해줘야한다. 때문에,"어느 시점에 어느 환경에서 이를 호출했을 때에, 그 당시의 결과 값을 전달하거나 말거나 해서 그 다음 뭔..
[javaScript] 비동기, Promise,async/await 동기(synchronous) vs 비동기(asynchronous) 동기(synchronous) 비동기(asynchronous) 예시 1.손님1이 아메리카노 주문 (손님2 기다리는중) 2.아메리카노 완성 및 손님1에게 전달(손님2 기다리는중) 3.손님2가 카페라떼 주문 4.손님 카페라떼 완성 및 손님2에게 전달 1.손님1이 아메리카노 주문 1-1.아메리카노 만들기 (손님2 주문 받는 중) 1-2.아메리카노 완성되면 손님에게 전달 2.손님2가 카페라떼 주문(손님1 아메리카노 만드는 중) 2-1.카페라떼 만들기 2-2.카페라떼 완성되면 손님에게 전달 특징 어떤 일을 수행하는 동안 다른 것은 수행 못한다.(blocking) 비유하자면 전화같은 것 어떤 일을 수행하면서 다른 일을 수행할 수 있다.(non-bloc..
[javaScript] 프로토타입 체인 시작하며 프로토타입 체인을 이해하기 위해선 '클래스와 인스턴스', '객체지향 프로그래밍'의 기초와 '프로토타입'에 대한 이해가 필요하다. extends와 super이용해서 상속 클래스 구현하기 class Animal{ constructor(type,family){ this.type = type; this.family = family } eat(){ console.log('냠냠') } sleep(){ console.log('쿨쿨') } } class Dog extends Animal{ constructor(type,family,name,species,gender){ //상위 클래스로부터 상속받은 프로퍼티 정의하기 위해선 super필요함 super(type,family); //Dog 클래스에서만 추가되는 속..
[javaScript] 정규 표현식 정규식(정규 표현식, Regular Expression)이란 정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴을 말한다 대표적인 예로, 아이디나 비밀번호가 일정조건에 들어오는지 체크할때 쓰일 수 있다. 아이디엔 영어 몇자리 이상이어야 한다던가, 비밀번호는 특수문자와 영어 대소문자를 포함해야한다던가... 이런것들을 체크하는 것을 "유효성 검사(validation check)"라고 하는데 이 정규식은 유효성 검사에서 요긴하게 쓸 수 있다. 정규표현식 생성하기 정규 표현식을 생성하는 두가지 방법은 아래와 같다. //1️⃣리터럴 방식, 슬래시로 패턴을 감싸서 작성 => /패턴/ //바뀔일 없을 때, 고정적일때 const re = /abc/; //2️⃣객체의 생성자 호출 //바뀔일 있을때,..
[javaScript] 프로토타입 자바스크립트를 이루고 있는 것은 거의 객체이다. 우리가 자바스크립트에서 '함수'라고 부르는 것도 결국에 "함수라는 객체"인 것이며, 이 점을 알고보면 "함수는 일급객체이다" 라는 기본 전제에서, 왜 "객체"라고 했는지도 이해가 간다. 즉, 함수는 일반 객체들과 달리 함수만의 특성이 추가된 객체의 한 종류인 것이다. (거의 모든 것은 객체이며) 모든 객체는 모두 어떤 객체의 파생객체이다. 자바스크립트는 어떤 본보기 조상님 객체가 심어져있고, 이용자는 그 객체에서 파생되어 똑같은 성질등을 공유하는 객체를 이용해서 개발을 하는 것이다. 예를들어 함수의 경우에서, 실제로 우리가 정의하는 모든 함수 객체들은, Function이라는 고인물 조상님 객체의 파생객체이다. 즉, 내가 만든 임의의 함수 foo의 역시 Fu..