/////
Search
Duplicate

데이터 타입, 객체 리터럴, 함수, 배열

이름
심은지
키워드
템플릿 리터럴
객체리터럴
함수
배열
Date
2023/04/04

오늘의 키워드

템플릿 리터럴
객체의 정의, 프로퍼티, 메서드
함수
배열

밑줄 친 부분

06 : 데이터 타입

템플릿 리터럴 내에서는 이스케이프 시퀀스를 사용하지 않고도 줄바꿈, 공백이 적용된다. (p. 64)
${}으로 표현식을 감싸면 문자열이 아니더라도 타입이 강제로 변환되어 삽입된다. (p. 65)
표현식 삽입은 반드시 템플릿 리터럴 내에서 사용해야 한다. 템플릿 리터럴이 아닌 일반 문자열에서의 표현식 삽입은 문자열로 취급된다. (p. 65)

10 : 객체 리터럴

프로퍼티는 객체의 상태를 나타내는 값(data), 메서드는 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작(behavior)이다. (p. 125)
리터럴(literal)은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용하여 값을 생성하는 표기법을 말한다. (p. 126)
객체는 프로퍼티의 집합이며, 프로퍼티는 키(key)와 값(value)으로 구성된다. (p. 127)
프로퍼티 키에 문자열이나 심벌 값 외의 값을 사용하면 암묵적 타입 변환을 통해 문자열이 된다. 예를 들어, 프로퍼티 키로 숫자 리터럴을 사용하면 따옴표는 붙지 않지만 내부적으로는 문자열로 변환된다. (p. 129)
프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드method라 부른다. (p. 130)
대괄호 표기법을 사용하는 경우 대괄호 프로퍼티 접근 연산자 내부에 지정하는 프로퍼티 키는 반드시 따옴표로 감싼 문자열이어야 한다. … 따옴표로 감싸지 않은 이름을 프로퍼티 키로 사용하면 자바스크립트 엔진은 식별자로 해석한다. (p. 131)
객체에 존재하지 않는 프로퍼티에 접근하면 undefined를 반환한다. 이때 ReferenceError가 발생하지 않는데 주의하자. (p. 131)

12 : 함수

수학의 함수는 “입력(input)”을 받아 “출력(output)”을 내보내는 일련의 과정을 정의한 것이다. … 이처럼 함수는 마치 재료를 투입받아 제품을 생산하는 기계와 같다. (p. 154)
프로그래밍 언어의 함수도 입력을 받아서 출력을 내보낸다. 이때 함수 내부로 입력을 전달받는 변수를 매개변수(parameter), 입력을 인수(argument), 출력을 반환값(return value)이라 한다. (p. 155)
함수는 몇 번이든 호출할 수 있으므로 코드의 재사용이라는 측면에서 매우 유용하다. (p. 156)
코드의 중복을 억제하고 재사용성을 높이는 함수는 유지보수의 편의성을 높이고 실수를 줄여 코드의 신뢰성을 높이는 효과가 있다. (p. 156)
적절한 함수 이름은 함수의 내부 코드를 이해하지 않고도 함수의 역할을 파악할 수 있게 돕는다. 이는 코드의 가독성을 향상시킨다. (p. 156)

27 : 배열

자바스크립트의 배열은 자료구조에서 말하는 일반적인 의미의 배열과 다르다. 배열의 요소를 위한 각각의 메모리 공간은 동일한 크기를 갖지 않아도 되며, 연속적으로 이어져 있지 않을 수도 있다. 배열의 요소가 연속적으로 이어져 있지 않는 배열을 희소 배열(sparse array)이라 한다. (p. 495)
현재 length 프로퍼티 값보다 작은 숫자 값을 할당하며 배열의 길이가 줄어든다. (p. 498)
주의할 것은 현재 length 프로퍼티 값보다 큰 숫자를 할당하는 경우다. 이때 length 프로퍼티 값은 변경되지만 실제로 배열의 길이가 늘어나지는 않는다. (p. 498)
delete 연산자는 객체의 프로퍼티를 삭제한다. 이때 배열은 희소 배열이 되며 length 프로퍼티 값은 변하지 않는다. 따라서 희소 배열을 만드는 delete 연산자는 사용하지 않는 것이 좋다. 희소 배열을 만들지 않으면서 배열의 특정 요소를 완전히 삭제하려면 Array.prototype.splice 메서드를 사용한다. (p. 507)
배열에는 원본 배열을 직접 변경하는 메서드(mutator method)와 원본 배열을 직접 변경하지 않고 새로운 배열을 생성하여 반환하는 메서드(accessor method)가 있다. (p. 507)

이해 가지 않는 부분

원시 타입과 객체 타입은 크게 세 가지 측면에서 다르다.
원시 값은 변경 불가능한 값(immutable value)이다. 객체는 변경 가능한 값(mutable value)이다.
원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다. 객체를 변수에 할당하면 변수에는 참조 값이 저장된다.
원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. 이를 값에 의한 전달(pass by value)이라 한다. 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다. 이를 참조에 의한 전달(pass by reference)이라 한다. (p. 137)
함수 선언문은 표현식이 아닌 문이다. 함수 선언문이 만약 표현식인 문이라면 완료 값 undefined 대신 표현식이 평가되어 생성된 함수가 출력되어야 한다. (p. 159)