본문 바로가기

Javascript27

변수의 유효범위(Scope)와 클로저, 가비지 컬렉션 변수의 유효범위(Scope)와 클로저, 가비지 컬렉션 JS : 함수지향 언어로 자유도가 높음. (높은 자유도가 단점이 되기도 함...ㅠ) 그때문에 JS의 함수는 동적 생성, 인자로 넘기기, 생성된 곳이 아닌 곳에서 호출이 가능 함수 내부에서 외부에 있는 변수에도 접근이 가능함 사용하다 보면 의문점이 생기는데 1. 함수 생성 이후 외부 변수가 바뀌면 어찌되는가?? 참조하고 있는 값이 바뀌는거니 같이 바뀜 2. 매개변수로 함수를 넘겨 먼곳에서 호출하면 어떻게 됨? 호출된 곳을 기준으로 외부변수에 접근? 아뇨, 생성된 곳을 기준으로 외부변수에 접근하는 scope 가 결정됨. 호출된곳과는 무관함. 이렇게 답을할 수 있겠다. 아래 내용을 읽기 이전에 대략적으로 필요한 단어들을 정리하고 넘어가겠다. 외부 변수 : .. 2022. 11. 30.
함수 정리 함수 호출 방식 내부 변수 ( 블록 스코프 ) 외부 변수 ( 함수 외부의 변수 접근 및 수정 가능 ) this가 바인딩 되는 객체는 동적으로 결정됨 ( 호출 방식에 따라 다름 ) 1. 함수 호출 함수를 호출하면 prototype 을 가지게 됨 (기본값) 글로벌 영역에 선언된 함수는 전역 객체의 값에 접근 가능 내부 함수도 this가 global, window 를 가리킴 기명함수 (함수 선언문) function doSomething() { // do Something... } 호이스팅 O 선언 이전에 호출 가능 arguments : O this : global / window 객체 this가 특정 객체를 가리키기 위한 방법 : this를 다른 변수에 담아 사용 함수 내부에서 자신 호출 가능 let sayH.. 2022. 11. 29.
Vite, 프록시 적용하기 Vite, 번들링이 굉장히 빠른 장점이 있어서 요청받은 기능을 구현하는데 사용하고 있다. 상시로 서버를 돌릴만큼의 서비스는 아니기에 로컬 환경에서 처리하는것이 적당했다. 다만, 외부 API가 필요한 상황이라 API 호출 시 CORS 문제를 일으켰다. 특히, 네이버는 서버에서만 API를 처리함을 강제하고 있어 어쩔 수 없이 CORS를 잡고 넘어가야 했다. 간단하게 프록시로 우회하여 사용하려 했으나 예전처럼 1. package.json에 proxy 추가 2. htt-proxy-middleware 외부 라이브러리 적용 위 두가지를 붙여보았으나 정상적으로 동작하지 않았다. Vite 공식 홈페이지를 이리저리 찾아보니 Server option을 주는 방법이 조금 남달랐다. Vite 프로젝트를 생성하면 루트폴더에 v.. 2022. 10. 20.
Error (amqplib) : Channel closed by server: 406 (PRECONDITION-FAILED) |Consul| Unregister service! Error: Channel closed by server: 406 (PRECONDITION-FAILED) with message "PRECONDITION_FAILED - delivery acknowledgement on channel 1 timed out. Timeout value used: 1800000 ms. This timeout value can be configured, see consumers doc guide to learn more" at Channel.C.accept (C:\Users\Smart\Project\MSAexpress\node_modules\amqplib\lib\channel.js:422:17) at Connection.mai.. 2022. 4. 12.
Command Pattern - 행위 디자인 패턴 명령 (Command) 가장 일반적 정의 : 실행에 필요한 모든 정보들을 캡슐화 하고 이렇게 만든 모든 객체를 명령이라 할 수 있음 함수나 기능을 직접적으로 호출하는 대신 이러한 호출을 수행하려는 의도롤 나라태는 객체를 만듦 "그 의도를 구체화 하여 실제 작업으로 변환하는것을 다른 컴포넌트가 담당" -명령 : 함수, 함수를 호출하는데 필요한 정보를 캡슐화 하는 객체 -클라이언트 : 명령을 생성하고 호출자에게 제공하는 컴포넌트 -호출자 : 대상에서 명령의 실행을 담당하는 컴포넌트 -대상 : 호출의 주체, 단일한 함수이거나 객체의 멤버 함수일 수도 있음 네 컴포넌트는 패턴을 구현하는 방식에 따라 크게 달라짐 작업을 직접 실행하는 대신 명령 패턴을 사용하는 여러 어플이 있음 -명령은 나중에 실행 예약 가능 -.. 2022. 2. 14.
Middleware Pattern - 행위 디자인 패턴 미들웨어 (Middleware) Node.js 의 가장 독특한 패턴 일반적 미들웨어 : 하위 수준 메커니즘 추상화에 도움되는 소프트웨어 제품군 여기서는 "하위 계층의 서비스들과 응용 프로그램 사이에서 접착제 역할을 한다"라고 보면되겠음 1. Express의 미들웨어 Express 미들웨어는 파이프라인으로 구서오디어 들어오는 HTTP 요청과 요청에 대한 응답을 처리하는 서비스 집합임 Express 는 자유롭고 작은 웹 프레임워크, 개발자가 핵심에 손 대지 않고도 쉽게 기능을 쉽게 만들고 배포 가능 Express 미들웨어 특징 function (req, res, next) { ... } req, res는 이미 알고있고, next : 다음 미들웨어를 트리거 할 때 호출되는 콜백 어플에 대한 지원을 통해 요청을.. 2022. 2. 14.