반응형
요약
Each File is a Program
- 각각의 js파일은 개별적인 프로그램이며, 이 것들이 상호작용하여 하나의 프로그램처럼 보이는 것.
- 여러 독립된 js파일이 하나의 프로그램으로 동작하는 방법은 global scope뿐.
- 많은 프로젝트가 개별파일들을 하나의 파일로 결합하여 전달하는 빌드프로세스를 사용함. 이 경우는 단일 파일이 전체 프로그램이 맞음.
Values
- JS에서 값은 기본값(원시값)과 객체 둘로 나뉨
- `${NAME}` 백틱을 사용한 보간법 설명
- null과 undefined 중 더 안전하고 확실한 방법은 undefined이며, 사용할 때는 둘 중에 하나로 통일하는 게 좋음
- Symbol은 특수한 키를 만드는 데 사용함. => 일반적인 프로그램에선 쓸 일 거의 없음, 프레임워크나 라이브러리 같은 저수준에서 사용
const obj ={};
const sym1 = Symbol();
obj[sym1] = "haha";
console.log(obj[sym1]) // "haha"
Arrays And Objects
- 정렬은 객체다.
- 객체는 더 일반적인 개념. 배열처럼 index로 접근하지 않고 key값으로 접근한다.
Value Type Determination
typeof 42; // "number"
typeof "abc"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object" -- 실수, 버그!
typeof { "a": 1 }; // "object"
typeof [1,2,3]; // "object"
typeof function hello(){}; // "function"
Declaring and Using Variables
- var, let, const와 관련해서 설명함.
- 저자는 var을 안 쓰는 게 일반적이지만 그냥 안 쓰는 건 안된다 함. => 모든 기능을 배우고 적절히 사용해야 함을 말하고 싶은 듯.
- let과 const의 가장 큰 특징은 블록스코프. 그리고 let은 재할당 가능하지만, const는 안됨
Functions
//선언문 형태
function(){
}
//표현식 형태
const a = function(){
}
Comparisons
- 원시값은 값을 비교하고, 객체는 주소값을 비교함.
- ==는 값을 비교하고, ===는 값과 타입을 비교함.
- 그러나 ===가 항상 맞는 건 아님. => NaN===NaN(false), -0 === 0(true)
- 그래서 ====라고 말할 수 있는 Object.is()를 사용해도 좋음. ex) Object.is(-0,0) => false
Coercive Comparisons
- ==는 JS의 저자도 인정할 정도로 결함이라는 의견이 지배적
- 그러나 ==가 타입체크를 안 하는 것이 아님, 변환할 뿐이다.
- 42 == "42"가 TRUE인 이유는 "42"를 숫자로 변환했기 때문.
- "A" > "B"는 FALSE이다. 둘 다 문자열일 경우에는, 사전순으로 비교한다.
- ===를 사용하면 된다고 생각하지만, >, <, >=, <=도 사용하기 때문에 생각만큼 쉽지는 않다.
- 강제 타입변환을 피하는 유일한 방법은 같은 타입의 데이터를 비교하는 것뿐.
느낀 점
Get Started라 그런지, 확실히 기초적이고 쉬운 부분을 다루고 있다.
나도 ==가 타입체크를 안 한다고만 단순히 생각하고 있었는데, 책을 통해 다시 한번 생각하는 기회가 되었다.
또한, ===를 약간 맹신하고 있었는데, 허점이 있음을 알게 되었다.
반응형
'공부 정리 > You Don't Know Js' 카테고리의 다른 글
[YDKJ] Get Started - Chapter 3 - 1 (0) | 2023.04.26 |
---|---|
[YDKJ] Get Started - Chapter 2 - 2(完) (0) | 2023.04.23 |
[YDKJ] Get Started - Chapter 1 - 2(完) (0) | 2023.04.21 |
[YDKJ] Get Started - Chapter 1 - 1 (0) | 2023.04.20 |
[YDKJ] Get Started - preface (0) | 2023.04.20 |
댓글