Web/JS-deep-dive 학습 (6) 썸네일형 리스트형 [15장] let, const 키워드와 블록 레벨 스코프 var 키워드로 선언한 변수의 문제점변수 중복 선언 허용var 키워드로 선언한 변수는 중복 선언이 가능하다.초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작하고 초기화문이 없는 변수 선언문은 무시된다. 이때 에러는 발생하지 않는다.만약 동일한 이름의 변수가 이미 선언되어 있는 것을 모르고 변수를 중복 선언하면서 값까지 할당했다면 의도치 않게 먼저 선언된 변수 값이 변경되는 부작용이 발생한다.함수 레벨 스코프var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다.따라서 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 된다.변수 호이스팅var 키워드로 선언한 변수는 호이스팅되고 선언문 이전에 참조가 가.. [14장] 전역 변수의 문제점 전역 변수의 문제점과 전역 변수의 사용을 억제할 수 있는 방법을 살펴보자.변수의 생명 주기지역 변수의 생명주기변수는 자신이 선언된 위치에서 생성되고 소멸한다.전역 변수의 생명 주기는 애플리케이션의 생명 주기와 같다. 하지만 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸한다.지역 변수의 생명 주기는 함수의 생명 주기와 일치한다.하지만 지역 변수가 함수보다 오래 생존해있는 경우가 있다.누군가 메모리 공간을 참조하고 있으면 해제되지 않고 확보된 상태로 남아있는 것처럼 누군가 스코프를 참조하고 있으면 스코프는 소멸하지 않고 생존하게 된다.따라서 일반적으로 함수가 종료하면 함수가 생성한 스코프도 소멸하지만 누군가가 스코프를 참조하고 있다면 스코프는 해제되지 않고 생존하게 된다.(.. [13장] 스코프 모든 식별자(변수 이름, 함수이름, 클래스 이름 등)은 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다.이를 스코프라 한다. 즉 스코프는 식별자가 유효한 범위를 말한다.코드의 문맥과 환경코드가 어디서 실행되며 주변에 어떤 코드가 있는지를 렉시컬 환경이라고 부른다.즉, 코드의 문맥(context)은 렉시컬 환경으로 이뤄진다. 이를 구현한 것이 실행 컨텍스트이며, 모든 코드는 실행 컨텍스트에서 평가되고 실행된다.function foo() { var x = 1; // var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다. // 아래 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작한다. var x = 2; console.lo.. [12장] 함수 함수 정의프로그래밍 언어의 함수는 일련의 과정울 문(statement)로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다.함수 리터럴자바스크립트의 함수는 객체의 타입따라서 숫자 값을 숫자 리터럴로 생성하고 객체를 객체 리터럴로 생성하는 것처럼 함수도 함수 리터럴로 생성할 . 수 있다.//변수에 함수 리터럴을 할당var f = function add(x, y) { return x + y;}자바스크립트에서 함수는 객체지만 일반 객체와는 다르다.일반 객체는 호출할 . 수없지만 함수는 호출할 수 있다.함수가 객체라는 사실은 다른 프로그래밍 언어와 구별되는 자바스크립트의 중요한 특징이다.함수 선언문function add(x,y) { return x + y;}함수 선언문은 함수 리터럴과 형태가 동일.. [11장] 원시 값과 객체의 비교 자바스크립트가 제공하는 데이터 타입은 크게 원시 타입과 객체 타입으로 구분할 수 있다.원시 값은 변경 불가능한 값인 것에 비해 객체는 변경 가능한 값이다.원시 값을 변수에 할당하면 변수(할당된 메모리 공간)에는 실제 값이 저장된다.반면 객체를 변수에 할당하면 변수에는 참조 값이 저장된다.따라서 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다.원시 값원시 값은 변경 불가능한 값, 즉 한 번 생성된 원시 값은 읽기 전용 값으로 변경할 수 없다.따라서 let이나 var로 선언한 변수에 원시 값을 저장했을 때 저장된 값을 수정하면 이전에 할당된 메모리 공간의 원시 값이 수정되는 것이 아닌 새로운 메모리 주소에 수정한 원시 값이 저장되는 방식으로 변수의 값이 수정된다.문자열과 불변.. [10장] 객체 리터럴 객체자바스크립트에서 원시 값을 제외한 나머지 값(함수, 배열, 정규표현식 등)은 모두 객체원시 값은 변경 불가능한 값이지만 객체 타입의 값, 즉 객체는 변경 가능한 값이다.객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다.var person = { name : 'Lee', // 프로퍼티 age : 20};프로퍼티 : 객체의 상태를 나타내는 값(data)메서드 : 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작(behavior)인스턴스란?클래스에 의해 생성되어 메모리에 저장된 실체객체지향 프로그래밍에서 객체는 클래스와 인스턴스를 포함한 개념클래스는 인스턴스를 생성하기 위한 템플릿의 역할을 한다.인스턴스는 객체가 메모리에 저장되어 실제로 존재하는 것에 초점을 맞춘 용어자.. 이전 1 다음