13. 스코프
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
13.1 스코프란? 스코프(scope, 유효범위) 는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이다. 변수는 자신이 선언된 위치에 의해 자신이 유효한 범위, 즉 다른 코드가 변수 자신을 참조할 수 있는 범위가 결정된다. 변수뿐만 아니라 모든 식별자가 그렇다. 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등) 는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라 한다. 즉, 스코프는 식별자가 유효한 범위를 말한다. 스코프란 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙 이라고도 할 수 있다. 식별자는 어떤 값을 구별할 수 있어야 하므로 유일해야 한다. 따라서 식별자인 변수 이름은 중복될 수 없다. 즉, 하나의 값..
12. 함수
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
12.1 함수란? 함수는 자바스크립트에서 가장 중요한 핵심 개념이다. 또 다른 자바스크립트의 핵심 개념들인 스코프, 실행 컨텍스트, 클로저, 생성자 함수에 의한 객체 생성, 메서드, this, 프로토타입, 모듈화 등이 모두 함수와 깊은 관련이 있다. 프로그래밍 언어의 함수는 일련의 과정을 문(statement) 으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것 이다. 함수 내부로 입력을 전달받는 변수를 매개변수(parameter), 입력을 인수(argument), 출력을 반환값(return value) 이라 한다. 또한 함수는 값이며, 여러 개 존재할 수 있으므로 특정 함수를 구별하기 위해 식별자인 함수 이름을 사용할 수 있다. 12.2 함수를 사용하는 이유 함수는 필요할 때 여러 번 호..
11. 원시 값과 객체의 비교
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 이에 비해 객체(참조) 타입의 값, 즉 객체는 변경 가능한 값이다. 원시 값을 변수에 할당하면 변수(확보된 메모리 공간) 에는 실제 값이 저장된다. 이에 비해 객체를 변수에 할당하면 변수(확보된 메모리 공간) 에는 참조 값이 저장된다. 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. 이를 값에 의한 전달이라 한다. 이에 비해 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다. 이를 전달이라 한다. 11.1 원시 값 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름이다. 값은 변수에 저장된 데이터로서 표현식이 평가되어 생성된 결과를..
10. 객체 리터럴
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
10.1 객체란? 원시 타입은 단 하나의 값만 나타내지만 객체 타입은 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조다. 또한 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이지만 객체 타입의 값, 즉 객체는 변경 가능한 값이다. 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라 부른다. 객체는 객체의 상태를 나타내는 값(프로퍼티)과 프로퍼티를 참조하고 조작할 수 있는 동작(메서드)을 모두 포함할 수 있기 때문에 상태와 동작을 하나의 단위로 구조화할 수 있어 유용하다. 10.2 객체 리터럴에 의한 객체 생성 인스턴스? 인스턴스란 클래스에 의해 생성되어 메모리에 저장된 실체를 말한다. 객체지향 프로그래밍에서 객체는 클래스와 인스턴스를 포함한 개념이다. ..
9. 타입 변환과 단축 평가
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
9.1 타입 변환이란? 명시적 타입 변환/타입 캐스팅 이란 개발자가 의도적으로 값의 타입을 변환하는 것을 말한다. 암묵적 타칩 변환/타입 강제 변환 이란 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것이다. 암묵적 타입 변환은 기존 변수 값을 재할당하여 변경하는 것이 아니다. 자바스크립트 엔진은 표현식을 에러 없이 평가하기 위해 피연산자의 값을 암묵적 타입 변환해 새로운 타입의 값을 만들어 단 한 번 사용하고 버린다.
7. 연산자
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
7.1 산술 연산자 7.1.2 단항 산술 연산자 이항 산술 연산자와는 달리 증가/감소(++/--) 연산자는 피연산자의 값을 변경하는 부수효과가 있다. 즉, 증가/감소 연산을 하면 피연산자의 값을 변경하는 암묵적인 할당이 이뤄진다. 예를 들어, 피연산자는 연산의 대상이 되어야 하므로 값으로 평가할 수 있어야 한다. Infinity: 양의 무한대 -Infinity: 음의 무한대 NaN: 산술 연산 불가(not-a-number) console.log(10 / 0); //Infinity console.log(10 / -0); // -Infinity console.log(1 * "String"); //Nan 7.1.3 문자열 연결 연산자 연산자는 피연산자 중 하나 이상의 문자열인 경우 문자열 연결 연산자로 동작한..