14.1 변수의 생명 주기지역 변수의 생명 주기변수는 생명 주기가 있다. 변수선언은 런타임 이전 단계에서 자바스크립트에서 실행되지만, 엄밀히 말하면 이건 전역변수에 한정되어 맞다.함수 내 변수들은 함수가 호출된 직후에 함수 몸체의 코드가 실행되기 이전에 자바스크립트 엔진에 의해 먼저 실행된다.함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료되면 소멸한다.즉, 지역 변수의 생명 주기는 함수의 생명 주기와 대부분 일치한다.하지만 예외의 경우가 있는데, 클로저의 경우이다.자바스크립트 가비지 콜렉터는 그 누구도 참조하지 않을 때 메모리공간을 해제하는데. 아래와 같이 스코프를 계속 참조하고 있다면 해제하지 않는다(클로저).function foo(){ var x = 10; funct..
분류 전체보기
13-1 스코프란?모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조 할 수 있는 유효 범위가 결정된다.즉, 스코프는 식별자가 유효한 범위를 말한다.var x = 'global';function foo() { var x = 'local'; console.log(x); // local}foo();console.log(x); // global위 코드 실행시 자바스크립트 엔진은 이름이 같은 두 개의 변수 중 어떤 것을 참조할 지 결정해야 하는데 이를 식별자 결정이라 하며, 이 때 스코프는 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙이다.코드의 문맥과 환경렉시컬 환경: '코드가 어디서 실행되며 어떤 코드가 있는지' 를 렉시컬 환경이라고 부름. 즉 코드의 문맥은 렉시컬 환경으로 ..
12-1 함수란?함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다.수학의 함수처럼 프로그래밍 언어의 함수도 입력을 받아서 출력을 내보낸다. 이때 입력을 전달받는 변수를 매개변수, 입력을 인수, 출력을 반환값 이라고 한다.함수는 함수 정의를 통해 생성한다. 또한 함수의 실행을 명시적으로 지시하는 것을 함수 호출 이라고 한다.12-2 함수를 사용하는 이유함수는 몇 번이든 호출할 수 있으므로 코드의 재사용이라는 측면에서 유리하다. 이는 유지보수의 편의성, 코드의 신뢰성을 높이는 효과를 준다.또한 적절한 함수 이름은 코드의 가독성을 향상시킨다.12-3 함수 리터럴자바스크립트의 함수는 객체 타입의 값이다.함수 리터럴은 아래의 요소로 구성된다.function 키워드함수 이..
11-1 원시 값자바스크립트가 제공하는 8가지 데이터 타입은 크게 원시타입과 객체타입으로 구분 할 수 있다. 원시 타입과 객체 타입은 크게 3가지 측면에서 다르다.원시 타입의 값은 변경 불가능한 값이다. 객체(참조) 타입의 값은 변경 가능한 값이다.원시 타입의 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다. 객체를 변수에 할당하면 변수에는 참조 값이 저장된다.원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사 되어 전달된다.(값에 의한 전달) 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다. (참조에 의한 전달)변경 불가능한 값원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 변경 불가능 하다는 것은 변수가 아니라 값에 대한 ..
10-1 객체란?자바스크립트를 구성하는 거의 모든 것이 객체 이다.원시 타입의 값은 변경 불가능 한 값 (immutable value) 이지만, 객체는 변경 가능한 값 (mutable value) 이다.객체는 0개 이상의 프로퍼티로 구성된 집합이다. 프로퍼티는 키와 값으로 구성된다.let person = { //키 값 name : 'Lee', // 프로퍼티 age : 20, // 프로퍼티};자바스크립트의 모든 값은 프로퍼티 값이 될 수 있다. 다시 말해 함수도 프로퍼티 값이 될 수 있다. 프로퍼티 값이 함수일 경우 구분하기 위해 메서드라고 부른다.프로퍼티: 객체의 상태를 나타내는 값메서드: 프로퍼티를 참조하고 조작할 수 있는 동작let counter = { num: 0, // 프로퍼티 ..
9-1 타입 변환이란?개발자가 의도적으로 값의 타입을 변경하는 것을 명시적 타입 변환 또는 타입 캐스팅이라 한다.개발자의 의도와는 상관 없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것은 암묵적 타입 변환 혹은 강제 타입 변환이라고 한다.9-2 암묵적 타입 변환암묵적 타입 변환은 기존 변수 값을 재할당하여 변경하는 것이 아니고 새로운 타입 값을 만들어 한번 사용하고 버린다.문자열 타입으로 변환피연산자중 하나 이상이 문자열이라면 아래와 같이 문자열 타입으로 암묵적 타입 변환한다.// 숫자 타입0 + '' // "0" -0 + '' // "0"1+ '' // "1" -1 + '' ..