동기(synchronous) 및 비동기(asynchronous) 동기 방식 - 하나의 요청이 처리되는 동안 다른 요청이 처리되지 못하며 요청이 완료되어야만 다음 처리가 가능한 방식. (ex. java) 비동기 방식 - 하나의 요청 처리가 완료되기 전에 제어권을 다음 요청으로 넘겨 Blocking 되지 않으며 다음 요청을 처리 하는 방식. (ex. nodejs) NodeJS 비동기 IO를 지원하며 Single-Thread 기반으로 동작하는 서버. 클라이언트의 요청을 비동기로 처리하기 위하여 이벤트가 발생하며 Event Loop가 처리. Event Loop가 처리하는 동안 제어권은 다음 요청으로 넘어가고 처리가 완료되면 Callback을 호출하여 처리완료를 호출측에 알려준다. 올바른 사용 환경 각 단위 작업..
Prototype? 의미 prototype: 원형, 견본 어떠한 객체가 만들어지기 위해 그 객체의 모태가 되는 오브젝트를 의미한다. 모든 함수 객체의 생성자는 prototype 프로퍼티를 가지고 있다. 객체 생성 함수는 생성자로 대응되며 각 객체에서 공유되어 사용할 프로퍼티 및 함수는 prototype 객체에 넣어서 사용한다. 객체 생성시 new키워드를 사용하여 생성한다. // 생성자 함수 function Person (name) { // 이름을 객체에 초기화한다. this.name = name; } // 객 객체에서 공유될 함수인 getName()을 prototype에 정의한다. Person.prototype.getName = function () { return this.name; } const pe..
ECMA Script? 자바스크립트는 1995년 넷스케이프 웹 브라우져에서 웹페이지에 동적인 요소를 구현하기 위해서 발명 됨. 이후 많은 브라우져를 지원하면서 자바스크립트가 공통적으로 잘 작동하기 위해서 표준 규격이 필요하게됨. Ecma 인터내셔널에 의해 제정된 ECMA-262 기술 규격에 의해 정의된 범용 스크립트 언어. 스크립트 언어가 준수해야 하는 규칙, 세부 사항 및 지침을 제공한다. JavaScript는 ECMAScript 사양을 준수하는 범용 스크립팅 언어이다. ECMA Script 지원이 상이한 이유 JavaScript 엔진에는 Google Chrome의 V8, Mozilla Firefox의 SpiderMonkey와 같이 여러 종류가 존재함. 새로운 버전의 ECMAScript를 발표한다고해서..
객체? 실생활에서 우리가 인식할 수 있는 사물로 이해할 수 있음. 일반적으로 여러 데이터와 함수로 이뤄진다. 객체란 이름(key)과 값(value)으로 구성된 프로퍼티(property)의 정렬되지 않은 집합. var person = { name: 'Park Jin', age: 31, introduce: function() { return 'my name is ' + this.name + ' and my age is ' + this.age } }; console.log('person.name :: ', person.name); // person.name :: Park Jin console.log('person.age :: ', person.age); // person.age :: 31 console.log..
매개변수 다른 언어와 달리 자바스크립트에서는 매개변수의 타입을 명시하지 않는다. 정의된 파라미터의 갯수보다 많거나 적더라도 오류를 내지 않는다. 적을경우 나머지 파라미터는 undefined처리함. 많을경우 나머지 파라미터는 무시 또는 arguments로 접근 가능함. function parameterFunction(first, second) { console.log('first :: ', first); console.log('second :: ', second); return first + second; } // first :: 1 // second :: undefined // result1 :: NaN var result1 = parameterFunction(1); console.log('result1..
블록 스코프 Vs 함수 스코프 블록 스코프: 블록({})으로 싸여진 범위만큼 스코프가 결정됨(Ex. Java) // 코드 추가 예정 함수 스코프: 함수 블록으로 싸여진 범위만큼 스코프가 결정됨. 함수는 자신이 정의된 범위 안에서 정의된 모든 변수 및 함수에 접근가능. function functionScope() { for (var i = 0; i < 3; i++) { // for block i :: 0 // for block i :: 1 // for block i :: 2 console.log('for block i :: ', i); } // outside for block i :: 3 console.log('outside for block i :: ', i); } functionScope(); cons..