📝 Javascript/모던 자바스크립트 Deep Dive

💡 13. 스코프 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위. 즉, 스코프는 식별자가 유효한 범위 렉시컬 환경 : 코드가 어디서 실행되며 주변에 어떤 코드가 있는지 실행 컨텍스트 : 렉시컬 환경을 구현한 것 만약 스코프라는 개념이 없다면 같은 이름을 갖는 변수는 충돌을 일으키므로 프로그램 전체에서 하나밖에 사용할 수 없다는 문제점이 발생한다. 쉽게 말하여, 스코프란 컴퓨터의 폴더(디렉터리) 같은 개념 📌 스코프의 종류 전역 스코프 : 코드의 가장 바깥 영역 지역 스코프 : 함수 몸체 내부 📌 스코프 체인 스코프가 함수의 중첩에 의해 계층적으로 구조를 갖는다는 것 실행 컨텍스트의 렉시컬 환경을 단방향으로 연결한 것 중첩 함수의 지역 스코프는 중첩 함수를 포함하는 외부 ..
해당 글은 [모던 자바스크립트 Deep Dive] 도서의 내용을 정리한 글입니다. 💡 12.1 함수 프로그래밍 언어의 함수란? 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것 입력을 받아서 출력을 내보낸다. 매개변수(parameter)와 인수(argument) 반환값(return value) ✔️ 매개변수 : 함수 내부로 입력을 전달받는 변수 ✔️ 인수 : 입력 ✔️ 반환값 : 출력 함수 호출 (function call/invoke) 미리 정의된 일련의 과정을 실행하기 위해 필요한 입력, 즉 인수(argument)를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시하는 것. 함수를 호출하면 코드 블록에 담긴 문들이 일괄적으로 실행되고, 실행결과 즉 반환값을..
해당 글은 [모던 자바스크립트 Deep Dive] 도서의 내용을 정리한 글입니다. 💡 11.1 원시 값 원시 타입 : 변경 불가능한 값 객체 타입 : 변경 가능한 값 원시 값 변수할당 : 실제 값이 저장 객체 값 변수할당 : 참조 값이 저장 11.1.1 변경 불가능한 값 원시 값은 읽기 전용 값으로서 변경할 수 없다. 변경이 불가능하다는 것은 변수가 아니라 값에 대한 진술이다. // const 키워드를 사용해 선언한 변수는 재할당이 금지된다. 상수는 재할당이 금지된 변수일 뿐이다. const o = {}; // const 키워드를 사용해 선언한 변수에 할당한 원시값(상수)은 변경할 수 없다. // 하지만 const 키워드를 사용해 선언한 변수에 할당한 객체는 변경할 수 있다. o.a = 1; consol..
해당 글은 [모던 자바스크립트] 도서의 내용을 정리한 글입니다. 💡1. 객체란? 원시 타입은 단 하나의 값만 나타내지만 객체 타입은 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조다. 원시 타입의 값, 즉 원시 값은 변경 불가능한 값(immutable value)이지만 객체 타입의 값, 즉 객체는 변경 가능한 값(mutable value)이다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다. 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 함수 또한 일급 객체이므로 값으로 사용할 수 있는데, 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라 부른다. 프로퍼티 : 객체의 상태를 나타내는 값(data..
💡 1. 타입변환이란? 값의 타입은 개발자의 의도 혹은 자바스크립트 엔진에 따라 다른 타입으로 변환될 수 있다. 명시적 타입 변환 : 개발자가 의도적으로 값의 타입을 변환하는 것. 타입 캐스팅이라고도 불린다. 암묵적 타입 변환 : 개발자의 의도와는 상관없이 표현식을 평가하는 도중 자바스크립트 엔진에 의해 암묵적으로 타입이 변환되는 것. 타입 강제 변환이라고도 한다. 명시적 타입 변환의 예시 var x = 10; // 명시적 타입 변환 // 숫자를 문자열로 타입 캐스팅한다. var str = x.toString(); console.log(typeof str, str); // string 10 암묵적 타입 변환의 예시 var x = 10; // 암묵적 타입 변환 // 문자열 연결 연산자는 숫자 타입 x의 값..
해당 글은 [모던 자바스크립트 Deep Dive] 도서의 내용을 정리한 글입니다. 💡 8장 제어문 제어문(control flow statement)은 조건에 따라 코드 블록을 실행(조건문)하거나 반복실행(반복문)할 때 사용한다. 일반적인 코드는 위에서 아래로 순차적으로 실행하지만, 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다. 💡 1. 블록문 블록문(block statement)은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다. 블록문은 하나의 실행 단위로 취급하며, 단독으로 사용하기도 하나 일반적으로 제어문이나 함수를 정의할 때 사용 한다. 문의 끝에는 세미콜론을 붙이는 것이 일반적이다. 하지만 블록문은 언제나 문의 종료를 의미하는 자체 종결성을 ..
해당 글은 [모던 자바스크립트 Deep Dive] 도서의 내용을 정리한 글입니다. 💡 연산자 연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입 지수 연산 등을 수행해 하나의 값을 만든다. 피연산자는 연산자의 연산대상이며, 값으로 평가될 수 있는 표현식이어야 한다. 피연산자와 연산자의 조합으로 이뤄진 표현식도 값으로 평가될 수 있는 표현식이다. 💡 산술 연산자 산술 연산자는 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다. 연산이 불가능한 경우 NaN(Not a Number)를 반환한다. 이항 산술 연산자 이항 산술 연산자는 2개의 피연산자를 산술 하여 숫자 값을 만든다. 모든 이항 산술 연산자는 부수효과(side effect)가 없다. 단항 산술 연산자 단항 산술..
해당 글은 [모던 자바스크립트 Deep Dive] 도서의 내용을 정리한 글입니다. 💡 객체타입 자바스크립트의 데이터 타입은 크게 원시 타입과 객체 타입으로 분류한다고 했다. 자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든 것이 객체라는 것이다. 앞에 올렸던 데이터 타입 -1 게시글에 올라온 데이터 타입 이외의 값은 모두 객체 타입이다. 💡 데이터 타입의 필요성 1. 데이터 타입에 의한 메모리 공간의 확보와 참조 메모리에 값을 저장하려면 먼저 확보해야 할 메모리 공간이 크기를 결정해야 한다. 값을 저장하기 위해 메모리 공간을 확보한 다음, 확보된 메모리에 값을 저장한다. 이러한 처리를 하려면 값을 저장할 때 확보해야 할 메모리 공간의 크기를 알아야 한다. 자바스크립트 엔진은 변수..
해당 글은 [모던 자바스크립트 Deep Dive] 도서의 내용을 정리한 글입니다. 💡 데이터 타입 데이터 타입(data type, 줄여서 '타입'이라고도 한다)은 값의 종류를 말한다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다. 7개의 데이터 타입은 원시 타입과 객체 타입으로 분류할 수 있다. 💡 숫자타입 자바스크립트는 독특하게 하나의 숫자 타입만 존재한다.(number) C나 자바의 경우 정수와 실수를 구분해서 int, long, float, double 등과 같은 다양한 숫자 타입을 제공한다. 자바스크립트는 모든 수를 실수로 처리한다. 정수, 실수, 2진수, 8진수, 16진수 리터럴은 모두 메모리에 배정밀도 64비트 부동소수점 형식의 2진수로 저장된다. 이들 값을 참조하면 모두 10진수로 ..
해당 글은 [모던 자바스크립트 Deep Dive] 도서의 내용을 정리한 글입니다 💡 값 값(value)은 식(표현식 expression)이 평가(evaluate)되어 생성된 결과를 말한다. // 10 + 20은 평가되어 숫자 값 30을 생성한다. 10 + 20; // 30 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체에 붙인 이름이라고 했다. 변수에 할당되는 것은 값이다. 메모리 공간에 저장된 것은 10 + 20이 아니라 값 30이다. 따라서 10 + 20은 할당 이전에 평가되어 값을 생성해야 한다. 값은 다양한 방법으로 생성할 수 있다. 가장 기본적인 방법은 리터럴을 사용하는 것이다 💡 리터럴 리터럴(literal)은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표..
늘코딩
'📝 Javascript/모던 자바스크립트 Deep Dive' 카테고리의 글 목록 (2 Page)