본문 바로가기

자바스크립트 딥다이브9

12. 함수 함수 프로그래밍 언어의 함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 이때 함수의 역할은 입력을 받아서 정의된 일련의 과정을 실행하고, 반환값을 출력하는 것이다. 입력을 전달받는 변수를 매개변수(parameter), 입력을 인수(argument), 출력을 반환값(return value)이라 한다. 함수는 함수 정의를 통해 생성한다. 자바스크립트의 함수는 다양한 방법으로 정의할 수 있다. 함수를 실행하기 위해서는 필요한 입력, 즉 인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시해야 한다. 이를 함수 호출이라 한다. 함수 호출의 실행 결과는 반환된 반환값이다. 함수는 객체 타입의 값이다. 함수를 사용하는 이유 함수는 코드의 재사용 측면에.. 2022. 7. 5.
11. 원시 값과 객체의 비교 자바스크립트에서의 데이터 타입은 크게 원시 타입과 객체 타입으로 구분할 수 있다. 원시 값은 변경 불가능한 값이다. 하지만 객체는 변경 가능한 값이다. 원시 값을 변수에 할당하면 변수에는 실제 값이 저장된다. 객체를 변수에 할당하면 변수에는 참조 값이 저장된다. 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. 이에 비해 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다. 원시 값 변경 불가능한 값 원시 타입의 값은 변경 불가능한 값이다. 한번 생성된 원시 값은 읽기 전용으로 변경할 수 없다. 변경 불가능하다는 것은 데이터의 신뢰성을 보장한다. 여기서 변경 불가능 하다는 것은 메모리 공간에 저장된 값이 변경 불가하다는 의미이다. 변수는 할당을.. 2022. 7. 5.
10. 객체 리터럴 객체 원시 타입은 단 하나의 값만 나타내지만 객체 타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조다. 원시 값은 변경 불가능한 값이지만 객체는 변경 가능한 값이다. 객체는 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다. 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 자바스크립트의 함수는 일급 객체이므로 값으로 취급할 수 있다. 따라서 함수도 프로퍼티 값으로 사용할 수 있다. 프로퍼티 값이 함수일 경우 일반 함수와 구분하기 위해 메서드라 부른다. 이처럼 객체는 프로퍼티와 메서드로 구성된 집합체다. 프로퍼티와 메서드의 역할은 다음과 같다. 프로퍼티: 객체의 상태를 나타내는 값 메서드: 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작 이처럼 객체.. 2022. 7. 4.
09. 타입 변환과 단축 평가 모든 값에는 타입이 있다. 값의 타입을 개발자가 의도적으로 변환하는 것을 명시적 타입 변환 또는 타입 캐스팅이라고 한다. 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것을 암묵적 타입 변환, 타입 강제 변환이라고 한다. 자바스크립트의 원시 값은 변경이 불가능하다. 타입 변환이란 기존 원시 값을 변경하지 않고, 일시적으로 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것이다. 따라서 부수 효과는 없다. 암묵적 타입 변환이 일어나는 이유는 표현식을 가급적 에러 없이 평가하기 위해서다. 자바스크립트 엔진은 코드의 문맥에 따라 피연산자의 값을 암묵적 타입 변환하여 새로운 타입의 값을 만들어 한번 사용하고 버린다. 개발자의 의도가 명확히 드러나.. 2022. 7. 1.
08. 제어문 제어문은 조건에 따라 코드 블록을 실행하거나 반복 실행할 때 사용한다. 일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행된다. 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다. 하지만 코드의 실행 순서가 변경된다는 것은 직관적인 코드의 흐름을 혼란스럽게 만든다. 함수형 프로그래밍 기법에서는 고차 함수를 적극 사용하여 제어문의 사용을 억제하여 복잡성을 해결하려고 노력한다. 자바스크립트에서도 여러가지 편리한 고차 함수를 제공하고 있다. 대표적으로 forEach, map, filter 등이 있다. 블록문 블록문은 0개 이상의 문을 중괄호로 묶은 것으로, 자바스크립트는 블록문을 하나의 실행 단위로 취급한다. 블록문은 단독으로 사용할 수도 있으나 일반적으로 제어문이나 함수를 정의할 때 사용한.. 2022. 7. 1.
07. 연산자 연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값(표현식)을 만든다. 이때 연산자의 대상을 피연산자라 한다. 자바스크립트가 제공하는 다양한 연산자에 대해 살펴보자. 산술 연산자 산술 연산자는 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다. 산술 연산이 불가능한 경우, NaN을 반환한다. 산술 연산자는 피연산자의 개수에 따라 이항 산술 연산자와 단항 산술 연산자로 구분할 수 있다. 이항 산술 연산자 이항 산술 연산자는 2개의 피연산자를 산술 연산하여 숫자 값을 만든다. 모든 이항 산술 연산자는 피연산자의 값을 변경하는 부수 효과가 없다. 다시 말해, 어떤 산술 연산을 해도 피연산자의 값이 바뀌는 경우는 없고 언제나 새로운 값을 .. 2022. 7. 1.