/////
Search
Duplicate
💐

데이터 타입, 연산, 타입/형변환

이름
이미현
키워드
데이터타입
삼항연산자
nullish 연산자
타입변환
Math
Number
단축 평가
Date
2023/04/03

오늘의 키워드

밑줄 친 부분

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 메서드는 예측 가능한 정확한 비교 결과를 반환한다.