Development/Javascript
[2021 겨울 민트하임 스터디] You don't know JS - Chapter 4: 강제변환(1)
2021.02.07(일) 챕터 4는 양이 많아서 값 변환/명시적 강제변환과 암시적 강제변환/동등성 비교의 3개로 나누어 정리하겠다. 명시적 강제변환과 암시적 강제변환 let a = 7; let b = "오늘은 " + a + "일"; // 암시적 강제변환 let c = String(a); // 명시적 강제변환 명시적 강제변환은 코드에서 의도적으로 타입 변환이 이뤄진다는 사실이 명확하게 드러나는 반면, 암시적 강제변환은 다른 작업으로 인한 부수 효과로 인해 발생하는 타입 변환이다. b의 경우: 암시적 강제변환 암시적 강제변환이 발생한다. 문자열과의 + 연산은 두 문자열을 합치는 문자열 접합을 의미하므로, 문자열 접합의 부수 효과로서 숫자 7을 문자열 "7"로 암시적 강제변환했다. c의 경우: 명시적 강제변환..
[2021 겨울 민트하임 스터디] You don't know JS - Chapter 3: 네이티브
네이티브 자바스크립트의 내장 함수다. 정확히는 특정 환경(브라우저 등의 클라이언트 프로그램, 또는 Node.js 등의 런타임)에 종속되지 않은, ECMAScript 명세의 내장 객체다. 내장 타입 생성자라고 생각하면 될 것 같다. var s = new String("Hello, world!"); typeof s; // "object" -> ? s instanceof String; // true -> ? 엥? 생긴건 생성자와 비슷하지만 결과는 우리의 예상과 다르다. new String("Hello, world!")의 결과는 원시 값 "Hello, world!"를 감찬 객체 래퍼다. typeof 연산자로 이 객체의 타입을 확인해 보면 자신의 감싼 원시 값의 타입이 아닌 Object의 하위 타입에 가깝다. 결..
[2021 겨울 민트하임 스터디] You don't know JS - Chapter 2: 값
Chapter 2: 값 2021.1.24(일) 책: You don't know JS 배열 vs 유사 배열 자바스크립트의 배열 어떤 타입의 값이라도 담을 수 있다. 배열 안에 배열도 넣을 수 있다(다차원 배열). 배열 크기 미리 선언할 필요 없다. 배열 인덱스는 숫자지만, 배열 자체가 하나의 객체이므로 키/프로퍼티 문자열을 추가할 수 있다. 이렇게 추가한 경우 length가 늘어나지 않는다. key가 숫자일 경우 문자열 키가 아닌 숫자 키(인덱스)를 사용한 것과 같은 효과가 일어난다. 뭔소리냐면 var a = []; a["13"] = 42; a.length; // 14 -> ? 배열에 문자열 타입 키/프로퍼티를 두는 것은 피해야 한다. 키를 사용해야 한다면 객체를 대용하고, 배열 원소의 인덱스로는 숫자만 ..
[2021 겨울 민트하임 스터디] You don't know JS - Chapter 1: 타입
Chapter 1: 타입 2021.1.16(토) 책: You don't know JS 자바스크립트에도 타입이 있다 '타입': 자바스크립트 엔진, 개발자 모두에게 어떤 값을 다른 값과 분별할 수 있는, 고유한 내부 특성의 집합 42(number) !== "42"(string) 타입에 따라 사용할 수 있는 함수와 연산, 가공 방법이 다름 자바스크립트의 내장 타입 자바스크립트의 7가지 내장 타입 null undefined boolean number string object symbol(ES6부터 추가됨) object를 제외한 6가지 타입을 원시 타입이라고 한다. 값의 타입은 typeof 연산자를 통해 알 수 있지만, 그 반환값이 항상 7가지 내장 타입 중 하나인 것은 아니다. typeof 반환값에 대한 예외 ..