오늘의 키워드
•
•
•
밑줄 친 부분
06장. 데이터 타입
•
자바스크립트의 모든 값은 데이터 타입을 갖는다. (p59)
•
데이터 타입은 원시 타입과 객체 타입으로 나뉜다. (p59)
•
ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따른다. 이는 정수로 표시된다 해도 사실은 실수라는 것을 의미한다. 따라서 정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있다. (p60)
•
Infinity, -Infinity, NaN 도 숫자형에 속한다. (p60)
•
다른 타입의 값과 달리 문자열을 따옴표로 감싸는 이유는 키워드나 식별자 같은 토큰과 구분하기 위해서이다. 문자열을 따옴표로 감싸지 않으면 자바스크립트 엔진은 키워드나 식별자 같은 토큰으로 인식한다. (p62)
•
템플릿 리터럴은 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공한다. 리터럴은 런타임에 일반 문자열로 변환되어 처리된다. (p62)
•
+ 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작하고, 그 외의 경우 덧셈 연산자로 동작한다. (p64)
•
표현식(${})을 사용하면 표현식의 평가 결과가 문자열이 아니더라도 문자열로 타입이 강제로 변환되어 삽입된다. (p65)
•
undefined 는 개발자가 의도적으로 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값이다. 따라서 변수를 참조했을 때 undefined가 반환된다면 참조한 변수가 선언 이후 값이 할당된 적이 없는, 초기화되지 않은 변수라는 것을 간파할 수 있다. 변수에 값이 없다는 것을 명시하고 싶을 때는 undefined가 아닌 null을 할당한다. (p66)
•
자바스크립트 엔진은 데이터 타입, 값의 종류에 따라 정해진 크기의 메모리 공간을 확보한다. (p69)
07장. 연산
•
숫자 타입이 아닌 피연산자에 + 단항 연산자를 사용하면 피연산자를 숫자 타입으로 변환하여 반환한다. 이때 피연산자를 변경하는 것이 아니라 숫자 타입으로 변환한 값을 생성해서 반환한다. (p77)
•
할당문은 값으로 평가되는 표현식인 문으로서 할당된 값으로 평가된다. 따라서 할당문을 다른 변수에 할당할 수도 있어서, 이러한 특징을 활용해 여러 변수에 동일한 값을 연쇄 할당할 수 있다. a = b = c = 0; (p80)
•
동등 비교(==) 연산자는 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치시킨 후 같은 값인지 비교한다. (p81)
•
드 모르간의 법칙은 논리 연산자로 구성된 가독성이 좋지 않은 복잡한 표현식을 가독성 좋은 표현식으로 변환할 수 있다. (p87)
•
typeof 연산자로 null 값을 연산해 보면 “null”이 아닌 “object”를 반환한다. (p88)
09장. 타입 변환과 단축 평가
•
값의 타입은 개발자의 의도에 따라 다른 타입으로 변환할 수 있다. 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환 or 타입 캐스팅이라 한다. (p108)
•
개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다. 이를 암묵적 타입 변환 또는 타입 강제 변환이라 한다. (p108)
•
타입 변환이란 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것이다. (p109)
•
옵셔널 체이닝 연산자 ?. 는 좌항의 피연산자가 null 또는 undefined인 경우 undefined를 반환하고, 그렇지 않으면 우항의 프로퍼티 참조를 이어간다.
•
단축 평가인 논리 연산자 && 는 Falsy값(false, undefined, null, 0, ‘ ‘. NaN)이면 좌항 피연산자를 반환하고, 옵셔널 체이닝 연산자 ?. 은 null, undefined이면 undefined를 반환한다는차이가있다.
•
null 병합 연산자(nullish coalescing)(??)는 좌항의 피연산자가 null 또는 undefined인 경우 우항의 피연산자를, 그렇지 않으면 좌항의 피연산자를 반환한다.
28장. Number
•
표준 빌트인 객체인 Number 객체는 생성자 함수 객체이기 때문에 new 연산자와 함께 호출하여 Number 인스턴스를 생성할 수 있다. (p552)
•
new 연산자를 사용하지 않고 Number 생성자 함수를 호출하면 Number 인스턴스가 아닌 숫자를 반환한다. 이를 이용하여 명시적으로 타입을 변환하기도 한다. (p553)
29장. Math
•
Math.abs() : 인자로 공백, 빈 배열, null을 전달할 경우 0 을 반환, undefined, 빈 객체, 숫자로 시작하지 않는 문자열, 빈 값은 NaN 을 반환한다.
•
1에서 10까지 랜덤한 정수 - Math.floor((Math.random() * 10 + 1))
이해 가지 않는 부분
새로 알게된 개념
Object.is 메서드
동등 비교 연산자(==)와 일치 비교 연산자(===)는 NaN과 NaN, +0과 -0을 같지 않다고 평가하지만 ES6에서 도입된 Object.is 메서드는 예측 가능한 정확한 비교 결과를 반환한다.