목록BOOKS/모던 자바스크립트 DeepDive (8)
\(@^0^@)/
* 스코프 * [ 스코프 ] 스코프는 Js를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념. var 키워드로 선언한 변수와 let 또는 const 키워드로 선언한 변수의 스코프도 다르게 동작함. var var1 = 1; // 코드의 가장 바깥 영역에서 선언한 변수 if (true) { var var2 = 2; // 코드 블록 내에서 선언한 변수 if (true) { var var3 = 3; // 중첩된 코드 블록 내에서 선언한 변수 } } function foo() { var var4 = 4; // 함수 내에서 선언한 변수 function bar() { var var5 = 5; // 중첩된 함수 내에서 선언한 변수 } } console.log(var1); // 1 console.log(var2);..
* 함수 * JS에서 가장 중요한 핵심 개념. 일련의 과정을 문 (statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것 프로그래밍 언어의 함수도 입력을 받아서 출력을 내보낼 때, 함수 내부로 입력을 전달받는 변수를 매개변수 (parameter), 입력을 (argument), 출력을 반환 값(return value)이라 한다. 함수는 값이며, 여러 개 존재할 수 있으므로 특정 함수를 구별하기 위해 식별자인 함수 이름을 사용할 수 있음. 함수는 함수 정의를 통해 생성되는데, 함수 정의만으로 함수가 실행되는 것은 아니라, 함수를 호출하면 코드 블록에 담긴 문들이 일괄적으로 실행되고, 실행 결과, 즉 반환 값을 반환함. (함수 호출 : 인수를 매개변수를 통해 함수에 전달하면서 함수..
JS가 제공하는 7가지 데이터 타입(숫자, 문자열, 불리언, null, undefined, 심벌, 객체 타입)은 크게 원시 타입 (primitive type)과 객체 타입 (object/reference type)으로 구분할 수 있음. - 원시 타입의 값, 즉 원시 값은 변경 불가능한 값(immutable value)이지만 객체(참조) 타입의 값, 즉 객체는 변경 가능한 값 (mutable value)이다. - 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장되지만, 객체를 변수에 할당하면 변수(확보된 메모리 공간)에는 참조 값이 저장됨. - 값에 의한 전달 (pass by value) : 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 ..
[ 객체 ] - JS는 객체 기반의 프로그래밍 언어 - JS를 구성하는 거의 "모든 것" - 원시 값을 제외한 나머지 값 (함수, 배열, 정규 표현식) - 0개 이상의 프로퍼티로 구성된 집합 ( 프로퍼티 : 키와 값으로 구성된 객체의 상태를 나타내는 값 메서드 : 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작 ) 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조 원시 값은 변경 불가능한 값이지만, 객체는 변경 가능한 값. [ 객체 리터럴에 의한 객체 생성 ] 클래스를 사전에 정의하고 필요한 시점에 new 연산자와 함께 생성자를 호출하여 인스턴스를 생성하는 방식으로 객체를 생성. ( 인스턴스 :..
[ 타입 변환 ] 타입 변환이란 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것. JS의 모든 값은 타입이 있다. 값의 타입은 개발자의 의도에 따라 다른 타입으로 변환할 수 있다. 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환 또는 타입 캐스팅(type casting)이라 함. 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 JS엔진에 의해 암묵적으로 타입이 자동변환 되는 것을 암묵적 타입 변환 또는 타입 강제 변환(type coercion) 이라 함. 명시적 타입 변환은 타입을 변경하겠다는 개발자의 의지가 코드에 명백히 드러나지만, 암묵적 타입 강제 변환은 개발자의 의지가 코드에 명백히 나타나지 않는다. 따라서, 자신이 작성한 코드에서 암묵적 타입 변환이 발생하는..
제어문은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용. 일반적으로 코드는 위에서 아래 방향, 순차적으로 실행됨. [ 블록문 ] 0개 이상의 문을 중괄호로 묶은 것, 제어문이나 함수를 정의할 때 사용하는 것이 일반적. 블록문은 언제나 문의 종료를 의미하는 자체 종결 성을 갖기 때문에 블록문의 끝에는 세미콜론을 붙이지 않는다. [ 조건문 ] 주어진 조건식의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정한다. 조건식은 불리언 값으로 평가될 수 있는 표현식이며, JS는 if ...else 문과 switch문으로 두 가지 조건문을 제공. 논리적 참 또는 거짓에 따라 실행할 코드 블록을 결정 삼항 조건 연산자 표현식은 값처럼 사용할 수 있기 때문에 ..
연산자 : 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다. ("피연산자를 연산하여 새로운 값을 만든다"라는 동사의 역할) 피연산자 : 연산의 대상, 값으로 평가될 수 있는 표현식 이어야 한다. ("값"이라는 명사의 역할) ==> 연산자는 값으로 평가된 피연산자를 연산해 새로운 값을 만들고, 피연산자는 연산의 대상이 되어야 하므로 값으로 평가할 수 있어야 한다. [ JS가 제공하는 연산자 ] 산술 연산자 문자열 연결 연산자 할당 연산자 비교 연산자 논리 연산자 타입 연산자 [ 그 외의 연산자 ] ?. 연산자 ?? 연산자 delete 연산자 new 연산자 instanceof 연산자 in 연산자 [ 산술 연산자 ] 피연산자를 대상으로 수학적 계산을..
데이터 타입(data type)은 값의 종류이며, 자바스크립트의 모든 값은 데이터 타입을 갖는다. JS는 7개의 데이터 타입을 제공하며, 원시 타입(primitive type)과 객체 타입(object/reference type)으로 분류 됨 원시 타입(primitive type) : 숫자(number), 문자(string), 불리언(boolean), undefined, null, 심벌(symbol) 객체 타입 : 객체, 함수, 배열 등 숫자 타입의 값 1과 문자열 타입의 값 '1' 은 비슷해 보이지만 전혀 다른 값. ex) 숫자(number) 타입의 값은 주로 산술 연산을 위해 생성하지만, 문자열 타입의 값을 주로 텍스트를 화면에 출력하 기 위해 생성. 그렇기에, 개발자는 명확한 의도를 가지고 타입을 ..