callback 함수를 통한 비동기 처리의 문제점 function makeCharcter(id,job,func){ let user setTimeout(function(){ console.log('1초 뒤 실행') user ={ id : id, job : job, info : id + job }; func(user) },1000) } makeCharcter('hoso','warrior',function(a){console.log('character:',a)}) 한개의 callback함수만 있다면 전혀 어지러워 보이지 않지만 저 만들어진 callback 함수 속에 또 함수를 만들고 또 함수를 만들고 하면 코드가 너무나도 길어질 것입니다. 콜백 함수를 중첩해서 연쇄적으로 호출해야하는 복잡한 코드의 경우, 계속..
Callback함수 다른 함수가 실행을 끝낸 뒤 실행되는 callback되는 함수를 말합니다. 함수를 만들 때, parameter를 함수로 받아서 쓸 수 있는데 그 함수가 callback 함수 입니다. 기본적으로 js를 배울 때 console.log로 따로 함수를 실행시켜 결과값을 확인하곤 합니다. 케릭터를 만드는 함수에서 return 값으로 user의 케릭터를 만들어내고 확인하는 방법입니다. callback 사용 X function makeCharacter(id,job){ const user = { id : id, job : job, info : id + job } return user } const hoso = makeCharcter('hoso','warrior') console.log('charac..
최대공약수 (the greatest common denominator) JS로 두 수의 최대공약수 구하기! 일단 최대공약수가 뭔지 다들 아시겠지만, 최대공약수는 사전적인 의미로 '둘 이상의 정수(整數)의 공약수 가운데 가장 큰 수. 정식(整式)에서는 공약수 가운데 차수가 가장 높은 것을 이른다' 인데 그림으로 설명하는 것이 더 이해가 빠르겠네요.... 한국어 너무 어려워요 ㅠ 84와 120의 최대공약수는 2*2*3인 12입니다! 저렇게 소수를 나누다보면 나오게 됩니다. 그것을 JS로 만들어보면 됩니다. 두 수를 나눴을 때 둘 다 나머지가 0이 나오는 수를 찾으면 되겠죠! let GCD = (num1, num2) => { let gcd = 1; for(let i=2; i GCD(120,84) => GCD(..
TypeScript를 공부하려고 하니까 Prototype, scope, this, 동적타입 느슨한 타입 이런 것들을 좀 알아야 왜 대체제를 만들었는지 알 수 있겠더라고요 ㅎㅎ 그래서 오늘은 Prototype을 공부해 봅시다! 프로토 타입 객체 Java, C++과 같은 클래스 기반 객체지향 프로그래밍 언어와 달리 자바스크립트는 프로토탑입 기반 객체지향 프로그래밍 언어입니다. Class 를 만들어서 객체를 만드는 방법도 사용할 수 있지만 prototype 을 사용해서 자식 object에게 데이터를 물려줄 수 있습니다. 일단 Class의 예를 보겠습니다. class human{ constructor(name, age){ this.name = name this.age = age } } const hosose =..
코드 구조화를 하면서 엔드포인트를 router를 이용하여 분리하였습니다. 기존에는 app = express() app.get('/users/signup' , async(req,res) => {내용} 이렇게 작성했다면 파일을 여러개로 분리하여 index.js 파일에 const userRouter = require('./userRouter') const router = express.Router() router.use('/users', userRouter) userRouter.js 파일에는 const router = express.Router() router.post('/signup', userController.signUp) 이런식으로 파일을 분리하여 엔드포인트를 지정해 주었습니다. 사실 이것이 코드 전체..
코드 구조의 중요성 음... 저는 지금 express의 모든 메소드를 한 파일에 넣어놓았습니다. get 부터 delete 까지 전부다요. 지저분한 저의 js파일은 부끄럽게 짝이 없기 때문에 API 구조화를 해보려고 합니다. 당연히 한 파일안에 있으면 구현하기 간단합니다. 하지만... 저도 한 7~8개의 기능만 구현해 놓았는데 제가 어디에 무엇을 써놓았는지 알지 못하겠더라고요! 특히, 기업 시스템에서 하나의 파일에 모든 코드를 넣는 경우는 거의 없습니다. 기능적으로 영역을 구분하여 개별 코드를 관히하는 것이 좋습니다. 코드의 구조를 더 체계적으로 그리고 효율적으로 구현해 놓은 것을 코드의 아키텍처(architecture)라고 합니다. 코드를 어떤 기준으로 나누어 구조화해야 하는지 알아봅시다! 1. 확장성 ..