목록분류 전체보기 (168)
seunghyun Note
16.1 내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티(pseudo property)와 의사 메서드(pseudo method)다. 모든 객체는 [[Prototype]] 이라는 내부 슬롯을 갖는다. 내부 슬롯은 자바스크립트 엔진의 내부로직이므로 원칙적으로 직접 접근할 수 없지만 [[Prototype]] 내부 슬롯의 경우, __proto__ 를 통해 간접적으로 접근 가능하다. const o = {}; // 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 없다. o.[[Prototype]] // -> Uncaught SyntaxError: Unexpected token '['..
15.1 var 키워드로 선언한 변수의 문제점 변수 중복 선언 허용 var키워드로 선언한 변수는 중복 선언이 가능하다. var x = 1; var y = 1; // var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다. // 초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작한다. var x = 100; // 초기화문이 없는 변수 선언문은 무시된다. var y; console.log(x); // 100 console.log(y); // 1 var키워드로 x와 y변수가 중복 선언되었다. 중복 선언하면 초기화문 유무에 따라 다르게 동작한다. 초기화 문이 있는 경우 var키워드가 없는것 처럼 동작하고, 초기화 문이 있는경우 변수 선언문은 무시된다. 함수 ..
14.1 변수의 생명 주기 14.1.1 지역 변수의 생명 주기 변수는 생성되고 소멸되는 생명주기life cycle을 갖는다. 만약 생명주기가 없다면 프로그램이 종료되지 않는한 영원히 메모리 공간을 점유하게 된다. 전역 변수 선언문은 어디에 있든 상관없이 가장 먼저 실행된다. 반면 지역 변수(함수 내부의 변수)는 함수가 호출되면 다른 문들이 실행되기 이전에 선언문들이 실행되면서 변수가 생성된다. 그리고 함수가 종료되면 변수도 소멸되어 생명주기가 종료된다. 즉, 지역 변수의 생명 주기는 함수의 생명 주기와 일치한다. 보통 지역 변수의 생명 주기와 함수의 생명 주기는 일치하지만, 지역변수가 함수보다 오래 생존하는 경우도 있다. 아래와 같은 경우이다(클로저) function foo(){ var x = 10; f..
13.1 스코프란? 스코프는 식별자가 유효한 범위 식별자 자신이 선언된 위치에 의해 다른 코드가 자신을 참조할 수 있는 유효 범위 var var1 = 1; // 코드의 가장 바깥 영역에서 선언한 변수 if (true) { var var2 = 2; // 코드 블록 내에서 선언한 변수 if (true) { var var3 = 3; // 중첩된 코드 블록 내에서 선언한 변수 } } function foo() { var var4 = 4; // 함수 내에서 선언한 변수 function bar() { var var5 = 5; // 중첩된 함수 내에서 선언한 변수 } } console.log(var1); // 1 console.log(var2); // 2 console.log(var3); // 3 console.lo..
12.1 함수란 함수는 자바스크립트에서 가장 중요한 핵심 개념이다. 스코프, 실행 컨텍스트, 클로저, 생성자 함수에 의한 객체 생성, 메서드, this, 프로토타입, 모듈화등이 모두 함수와 깊은 관련이 있다. // f(x, y) = x + y function add(x, y) { return x + y; } // f(2, 5) = 7 add(2, 5); // 7 프로그래밍 언어의 함수는 일련의 과정을 문(statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 함수는 아래 3가지로 이루어져 있다. 매개변수 parameter 인수 argument 반환값 return value 함수는 함수 정의function definition를 통해 생성한다. 12.2 함수를 사용하는 이유..
원시 타입의 값 - 변경 불가능한 값 객체 타입의 값 - 객체는 변경 가능한 값 11.1 원시 값 11.1.1 변경 불가능한 값 원시타입의 값은 생성된 원시 값은 읽기 전용 값으로서 변경할 수 없다. 변수는 언제든지 재할당을 통해 변수 값을 변경할 수 있다. 변수 값을 변경하기 위해 원시 값을 재할당하면 새로운 메모리 공간을 확보하고 재할당한 값을 저장한 후, 변수가 참조하던 메모리 공간의 주소를 변경한다. 값의 이러한 특성을 불변성immutability라고 한다. 11.1.2 문자열과 불변성 문자열 타입: 2바이트 숫자 타입: 8바이트 이외의 원시 타입은 규정되어 있지 않아 브라우저 제조사의 구현에 따라 다를 수 있다. // 문자열은 0개 이상의 문자들로 이뤄진 집합이다. var str1 = ''; /..