일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
- DOM API
- server side rendering
- typescript parcel tilde
- 순차리스트
- task queue
- Event Loop
- parcel
- express request body
- redux 사용 이유
- 자료구조 정렬
- client side rendering
- first class citizen
- 선형리스트
- 자료구조
- javascript module
- centos7 설치
- es6 module
- redux 특징
- react event bind
- javascript first class citizen
- request body undefined
- web server vs was
- javascript eventloop
- 일급 객체
- parcel resolver error
- react
- Browser API
- Call stack
- body-parser
- 자료구조 queue
- Today
- 9
- Total
- 559,093
목록프론트엔드/javascript (7)
비실이의 개발 성장기
# 이벤트 루프(event loop) 이벤트 루프는 구현방식으로 인해 붙여진 이름이며, 이벤트 루프는 보통 아래 코드와 유사합니다. while(queue.waitForMessage()) { queue.processNextMessage(); } 이벤트 루프는 javascript 실행환경인 브라우저에서 관리합니다. # 이벤트 루프 동작방식 비어있는 태스크 큐에 1개의 태스크가 들어온 경우, 이벤트 루프에 의해 태스크가 큐에서 pop 됩니다. pop 된 태스크가 실행되면 javascript engine 에 의해 실행 가능한 코드범위로 실행 컨텍스트가 생성됩니다. 생성된 실행 컨텍스트는 콜 스택(Call Stack) 에 push 되고 실행됩니다. 코드 실행과정에서 생성되는 태스크는 태스큐 큐에 push 됩니다...

# 모듈 ES6 에서 처음으로 모듈에 대한 표준이 도입되었습니다. ES5 까지 javascript 에는 모듈에 대한 표준이 없었습니다. 모듈 표준이 없었을 당시에는 AMD, CommonJS, UMD 방식의 모듈시스템을 사용했습니다. # 모듈 생성 js 파일이 곧 모듈이 됩니다. 모듈에서 다른 모듈을 가져와 사용할 수 있고, 반대로 내보낼 수 있습니다. (import / export) 생성한 js 모듈을 브라우저에서도 모듈로 인식하도록 script 태그에 type="module" 을 지정합니다. 브라우저가 모듈로 인식해야 import / export 를 사용할 수 있습니다. # 모듈 import / export 모듈에 선언한 변수나 함수를 다른 모듈에 제공하기 위해 export 를 사용합니다. export..
호이스팅 이란변수나 함수의 호출 코드가 선언 코드보다 아래쪽에 있음에도 불구하고 에러가 발생하지 않고, 마치 선언 코드가 호출 코드보다 더 위에 선언된 것과 같이 동작하는 특성을 호이스팅(Hoisting) 이라고 한다. 호이스팅 현상이 발생하는 이유javascript는 코드가 실행될 때 실행 컨텍스트가 생성된다. 이 때, 실행 컨텍스트 내부 변수 객체에서 현재 컨텍스트에 사용되는 변수 또는 함수를 생성한다. 변수가 생성되는 과정은 3단계로 나뉜다. 1. 변수 선언2. 변수 초기화3. 변수에 사용자가 지정한 값으로 초기화 여기서 3. 변수에 지정한 값 할당은 해당 실행 컨텍스트의 변수 객체 생성이 완료된 뒤에 실행된다. 즉, 변수의 선언 + 초기화 와 사용자가 지정한 값 초기화가 발생되는 환경이 나뉘어 발..
실행 컨텍스트란 (Execution Context, E.C) 실행 가능한 javascript 코드 블럭이 실행되는 환경 실행 컨텍스트가 생성되는 시점실행 가능한 코드(전역 코드, eval() 로 실행되는 코드, 함수 내부의 코드) 가 실행되면 각각의 독립적인 실행 컨텍스트가 생성된다. (ex. 함수가 실행되는 시점에 해당 함수의 실행 컨텍스트가 생성된다.) 생성 된 실행 컨텍스트는 순서대로 콜 스택(Call Stack) 에 push 된다. 스택이므로 가장 마지막에 추가 된 실행 컨텍스트가 현재 실행되고 있는 컨텍스트다. 실행 컨텍스트는 작업이 종료되면 콜 스택에서 pop 된다. 실행 컨텍스트 생성 코드 예123456789101112console.log('this is global context'); fu..
Javascript를 처음 접했을 당시, 타입이 엄격하지 않음과 더불어 함수가 변수처럼 어떠한 함수의 인자로 전달될 수 있고, 함수의 반환 결과로도 사용 가능하다는 것에 매력을 느꼈었다. Javascript에서 함수를 자유롭게(?) 사용가능한 이유는 함수를 일급 객체(First-class citizen) 로 취급하기 때문이었다. 어떠한 특징이 있으면 일급 객체라고 부르는 것일까 라는 생각이 들어 위키백과를 찾아봤다. 일급 객체란? '컴퓨터 프로그래밍 언어 디자인에서 일반적으로 다른 객체들에 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.' 일급 객체가 되기위한 조건 1. '변수나 데이터 구조안에 담을 수 있다.' testList 배열을 선언한 뒤, 0번째 인덱스에 익명함수를 추가했다. 2. '파라미터..
javascript가 최초 나왔을 당시, 웹 페이지의 규모는 지금과 같이 크지 않았다. 그러나 컴퓨터의 성능이 향상되고, 네트워크 속도가 빨라지며 웹 페이지 규모도 점차 커지게 되었다. 웹 페이지 규모가 커지다보니 javascript 코드 규모 또한 커지게 되었고, 중복되는 기능도 많았다. 그러다보니 중복되는 기능들을 하나의 모듈로 만들어 소스 코드의 규모를 줄이고, 재사용성을 좋게 하였다. 하지만, 이 당시 javascript 모듈 사용을 위한 방법에는 정해진 표준이 없었다. 표준 없이 뒤죽박죽 개발을 하면 개발자들간에 혼선이 생기게 되고, 언어 사용성이 떨어지게 된다. 이를 막기위해 CommonJS 와 AMD (Asynchronous Module Definition) 방식의 모듈 사용이 등장하게 된다..
function outerFunc() { var foo = "Foo"; return function() { console.log(foo); } } var closure = outerFunc(); closure(); 위 스크립트가 실행되면 아래 그림 좌측부터 우측 순서로 실행컨텍스트가 생성됩니다. 실행 컨텍스트는 함수가 호출되는 시점에 생성되며, 이 때 실행 컨텍스트 내부의 SCOPE 객체는 함수가 어디에 선언되었는지에 따라 결정되게 됩니다. 그 다음, 호출 스택에 아래와 같은 순서로 실행컨텍스트가 push / pop 됩니다. push 전역 실행컨텍스트 push outerFunc 실행컨텍스트 pop outerFunc 실행컨텍스트 push anomyFunc 실행컨텍스트 pop anomyFunc 실행컨텍스트 ..