14장 전역 변수의 문제점전역 변수의 무분별한 사용은 위험하기 때문에 되도록 지역 변수를 사용해야 한다.그렇기 때문에 전역 변수의 문제점과 사용을 억제하는 방법을 이번 장에서 알아보도록하자.14.1 변수의 생명 주기변수는 생성되고 소멸되는 생성주기가 있다.지역 변수의 생명주기지역 변수는 자신이 선언된 함수가 호출되면 생성되고 함수가 종료하면 소멸한다.즉, 지역 변수의 생명 주기는 함수의 생명 주기와 일치한다.function foo(){ var x = 'local'; console.log(x); // local return x;}foo();console.log(x); //ReferenceError: x is not defined함수 내부에서 선언한 변수는 함수가 호출된 직후 함수 몸체의 코드가 한 줄..
13장 스코프13.1 스코프란?스코프(유효범위)는 모든 프로그래밍 언어의 기본이며 중요한 개념이다.그로기 다른 언어의 스코프와 구별되는 특징이 있으므로 주의가 필요하다.코드 블록이나 함수는 중첩이 가능하기때문에 변수는 코드 가방 바깥 영역뿐 아니라 함수 몸체 내에서도 선언할 수 있다. 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정며 이를 스코프라 한다.그렇기 때문에 스코프는 식별자가 유효한 범위를 말한다고 볼 수 있다.var x = 'global';function foo(){ var x = 'local'; console.log(x); // 'local'}foo();console.log(x); //'global'..
12장 함수12.1 함수란??수학의 함수와 같은 개념이다.일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다.함수는 함수 정의를 통해 생성하고 함수를 호출해야 반환값을 반환하게 된다.12.2 함수를 사용하는 이유함수를 사용하는 가장 큰 이유는 코드를 재사용할 수 있다는 점이다.유지보수의 편의성을 높이고 실수를 줄여 코드의 신뢰성을 높이는 효과도 있다.12.3 함수 리터럴함수 리터럴은 function 키워드, 함수 이름, 매개 변수 목록, 함수 몸체로 구성된다.리터럴은 값을 생성하기위한 표기법인데 함수 리터럴도 평가되어 객체 값을 생성한다.함수가 객체라는 사실은 다른 프로그래밍 언어와 구별되는 특징인데 이 특징은 18장 함수와 일급객체에서 자세히 살펴볼 수 있다.12.4 ..
11장 원시 값과 객체의 비교원시 값객체값의 변경 유무변경 불가능한 값변경 가능한 값변수에 할당 했을 때 값 저장 방식(확보된 메모리 공간)실제 값 저장참조 값 저장할당 방식원시 값이 복사되어 전달객체의 참조 값이 복사되어 전달(참조에 의한 전달)11.1 원시 값변경 불가능한 값변경 불가능한 값 : 불변성불변성을 가진 원시 값을 할당한 변수는 재할당 이외에 변수 값을 변경할 수 있는 방법이 없음-> 만약 변수 값이 변경할 수 있다? 예기치 않게 변수 값이 변경될 수 있고 상태 변경을 추적하기 힘들것임오해 금지!! : 변수는 언제든지 재할당을 통해 변수 값을 변경할 수 있음4절에서 살펴봤듯 원시 값을 할당한 변수에 새로운 원시 값을 재할당하면 메모리공간이 저장되어 있는 재할당 이전의 원시 값을 변경하는 것..
10장 객체 리터럴10.1 객체란?자바스크립트는 객체 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 "모든 것"이 객체다.-> 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)은 모두 객체다.원시 값과 객체가 어떤 차이가 있는지 알고싶다면 11장 원시값과 객체의 비교에서 자세히 보자.원시 타입객체 타입단 하나의 값다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복학적인 자료구조변경 불가능변경 가능객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다.자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다.함수도 일급 객체이기 때문에 프로퍼티 값으로 사용 가능한데 이때는 일반 함수와 구분하기 위해 메서드라 부른다.let cou..
09장 타입 변환과 단축 평가타입 변환이란?값의 타입은 개발자의 의도에 따라 다른 타입으로 변환할 수 있다.명시적 타입 변환 (타입 캐스팅) : 개발자가 의도적으로 값의 타입을 변환하는 것암묵적 타입 변환 (타입 강제 변환) : 개발자의 의도와 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것var x = 10;var str = x.toString(); //명시적 타입 변환console.log(typeof str,str);//string 10//변수 x의 값이 변하지는 않음console.log(typeof x,x);//number 10var str2 = x + ''; //암묵적 타입 변환console.log(typeof str2,str2);//string 10//변수 x의 값이 변하지..