1. 클로저(closure)의 개념 function outerFunc() { var x = 10; var innerFunc = function () { console.log(x); }; return innerFunc; } /** * 함수 outerFunc를 호출하면 내부 함수 innerFunc가 반환된다. * 그리고 함수 oute...
[개발자 블로그] 5.18 실행 컨텍스트와 자바스크립트의 동작 원리(PoiemaWeb-Javascript)
해당 포스팅의 내용은 ES3를 기반으로 하고 있다. 1. 실행 컨텍스트 실행 컨텍스트(Execution Context)는 scope, hoisting, this, function, closure 등의 동작원리를 담고 있는 자바스크립트의 핵심원리이다. 실행 컨텍스트를 바로 이해하지 못하면 코드 독해가 어려워지며 디버깅도 매우 곤란해 질 것이다. EC...
[개발자 블로그] 5.17 this(PoiemaWeb-Javascript)
자바스크립트의 함수는 호출될 때, 매개변수로 전달되는 인자값 이외에, arguments 객체와 this를 암묵적으로 전달 받는다. function square(number) { console.log(arguments); console.log(this); return number * number; } square(2); 자바스크립트...
[Javascript] 상수 및 리터럴
프로그래밍 언어를 학습하다보면 보면 상수와 리터럴이란 단어를 자주 접할 수 있다. 이 둘의 차이는 아래와 같다. 상수(constant) 단 한 번만 값을 저장할 수 있는 저장공간을 뜻한다. 즉, 변하지 않는 변수를 의미하며 참조하는 메모리 값(메모리 위치)을 변경할 수 없다. final int i = 10; 이라는 코드에서 변수 i엔 절대 다른...
[개발자 블로그] 5.16 보다 안정적인 자바스크립트 개발 환경을 위한 Strict mode(PoiemaWeb-Javascript)
1. strict mode란? function foo() { x = 10; } console.log(x); // ? foo 함수 내에서 선언하지 않은 변수 x에 값 10을 할당하였다. 이때 변수 x를 찾아야 x에 값을 할당할 수 있기 때문에 자바스크립트 엔진은 변수 x가 어디에서 선언되었는지 스코프 체인을 통해 검색하기 시작한다. 자바스크립...
[개발자 블로그] 5.15 스코프(PoiemaWeb-Javascript)
1. 스코프란? 스코프(Scope, 유효범위)는 자바 스크립트를 포함한 모든 프로그래밍 언어의 기본적인 개념으로 확실한 이해가 필요하다. 스코프는 참조 대상 식별자(identifier, 변수, 함수의 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름)를 찾아내기 위한 규칙이다. 자바 스크립트는이 규칙대로 식별자를 찾는다. ...
[개발자 블로그] 5.14 프로토타입(PoiemaWeb-Javascript)
1. 프로토타입 객체 자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 연결되어 있다. 그리고 이것은 마치 객체 지향의 상속 개념과 같이 부모 객체의 프로퍼티 또는 메소드를 상속받아 사용할 수 있게 한다. 이러한 부모 객체를 Prototype(프로토타입) 객체 또는 줄여서 Prototype(프로토타입)이라 한다. 객체를 생성할 때 프로토...
[개발자 블로그] 5.12 함수(PoiemaWeb-Javascript)
2. 함수 호이스팅 자바스크립트는 ES6의 let, const를 포함하여 모든 선언(var, let, const, function, function*, class)을 호이스팅(Hoisting)한다. 호이스팅이란 var 선언문이나 function 선언문 등 모든 선언문이 해당 Scope의 선두로 옮겨진 것처럼 동작하는 특성을 말한다. 즉, 자바스...
[개발자 블로그] 5.10 객체(PoiemaWeb-Javascript)
2. 객체 생성 방법 자바와 같은 클래스 기반 객체 지향 언어는 클래스를 사전에 정의하고 필요한 시점에 new 연산자를 이용하여 인스턴스를 생성하는 방식으로 객체를 생성한다. 하지만 자바스크립트는 프로토타입 객체 지향 언어로서 클래스라는 개념이 없고 별도의 객체 생성 방법이 존재한다. Note: ECMAScript 6에서 새롭게 클래스가 도입되...
[개발자 블로그] 5.9 타입 변환과 단축 평가(PoiemaWeb-Javascript)
1. 타입 변환이란? 암묵적 타입 변환은 변수 값을 재할당해서 변경하는 것이 아니라 자바스크립트 엔진이 표현식을 에러없이 평가하기 위해 기존 값을 바탕으로 새로운 타입의 값을 만들어 단 한번 사용하고 버린다. 5. 단축 평가 논리곱 연산자 &&와 논리합 연산자 ||는 논리 평가를 결정한 피연산자의 평가 결과를 그대로 반환한다. 이를 단...