목록JavaScript (11)
melius
모듈(Module)을 생성하고 호출하는 방법은 실행환경마다 다르다. 1. Node.js CommonJS 문법에서는 module객체를 이용하여 모듈을 생성하고 require함수를 이용하여 모듈을 호출한다. // myModule.js (CommonJS) let data1 = "java"; let data2 = "python"; module.exports = { data1, data2 }; // app.js (CommonJS) let myModule = require("./myModule"); console.log(myModule); ES6 문법에서 export, import 문장을 이용하여 모듈(ESM)을 생성할 수 있는데, 파일의 확장자를 'mjs'로 설정해야 한다. // myModule.mjs (ES6)..
Promise는 비동기 처리의 한 방법으로, 전형적인 콜백패턴의 문제인 콜백지옥(callback hell)을 해결하기 위한 방법으로 많이 쓰인다. 인스턴스 생성 Promise의 인스턴스를 생성하면 인자로 전달된 함수를 실행한다. 인자로 전달된 함수는 resolve, reject 2개의 함수인 인자를 가지는데, 성공하면 resolve를 실행하고, 실패하면 reject를 실행시키면 된다. 오류가 발생하면 자동으로 reject를 실행된다. function genPromise(flag) { return new Promise(function (resolve, reject) { console.log("do something"); // throw new Error('something went wrong'); if (..
1. 배열(Array) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array 1) 배열생성 배열은 배열 리터럴(Array Literal)을 이용하여 생성할 수 있다. var arr = [1, null, undefined, function () {}, { x: 2, y: 4 }]; console.log(arr[0]);// 1 delete arr[0]; console.log(arr);// [empty, null, undefined, ƒ, {…}] console.log(arr[0]);// undefined 배열도 객체이며 내장객체 Array 생성자 함수를 이용하여 배열을 생성할 수 있다. var arr1 = ..
1. 실행문맥(Execution Context) 실행문맥(Execution Context)은 함수와 같은 코드블록이 실행되는 환경이다. 함수호출시에 실행문맥이 생성되어 콜 스택에 쌓인다. 실행문맥이 생성되면, 1) 변수객체(Variable Object) 생성 코드블록이 사용할 변수를 담는 변수객체(Variable Object)를 생성한다. 변수객체에는 함수의 인수를 담는 변수인 arguments와 코드블록 내에 선언된 지역변수가 생성된다. 전역실행문맥의 변수객체인 전역객체(Global Object)에는 함수과 같이 인수가 없으므로 arguments 객체가 없다. 함수실행문맥의 변수객체를 활성객체(Activation Object)라 한다. 2) 스코프 체인(Scope Chain) 생성 변수의 유효범위를 나..
https://2ality.com/2012/09/expressions-vs-statements.html https://github.com/leonardomso/33-js-concepts javascript-in-depth-all-you-need-to-know-about-expressions-statements-and-expression-statements 1. 표현식(Expression) 표현식은 반환값이 있고, 변수에 할당이 가능하다. let a = 1 + 2; 함수 표현식(Function Expression), 함수호출(Function Call), 변수할당은 표현식이다. let b = function () {}; let c = function () {}(); let d = c = a; 그룹 연산자((..
1. __proto__ 모든 객체는 __proto__ 프로퍼티가 있다. __proto__ 프로퍼티가 참조하는 객체(프로토타입 객체)의 속성을 자신의 속성처럼 사용 가능하다. * ECMA-262 기술 규격에서는 __proto__를 [[Prototype]]로 표기 객체 리터럴 방식을 생성시 __proto__은 Object.prototype 객체가된다. var obj = {}; console.log(obj.__proto__ == Object);// false console.log(obj.__proto__ == Object.prototype);// true console.log(obj.toString == Object.prototype.toString);// true var arr = []; console.lo..
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this https://www.w3schools.com/js/js_this.asp 함수 호출시에 this가 함수 내부로 전달되는데, 호출 패턴에 따라 this는 다른 객체를 참조한다. * 화살표 함수는 일반함수와 달리 this는 특정 객체와 바인딩이 없고, 일반 변수와 동일하게 행동한다(즉, 상위 스코프의 this). 1. 함수 호출 함수가 단독으로 호출되면 this는 전역 객체를 참조한다. 1) Browser console.log(this);// window var go = function () { console.log(this, this.name); } var nam..
1. 함수(Function) 1) 매개변수(Parameter) 함수선언(Function Statement)시에 사용되는 변수로 함수의 입력을 받는 변수 2) 인수(Argument) 함수호출(Function Call)시에 함수의 매개변수로 전달되는 입력값 function add(x, y) {// parameters: x, y return x + y; } console.log(add(1, 2));// arguments: 1, 2 * 함수는 1급 객체(first class object)이다. - 변수에 할당할 수 있다. - 함수의 인자로 사용할 수 있다. - 함수의 리턴값으로 사용할 수 있다. 2. 정의방식 https://developer.mozilla.org/en-US/docs/Web/JavaScript/G..