[Web] JavaScript 자료형 (자료형 확인, 형변환)

sua_ahn·2023년 2월 4일
0

Web

목록 보기
5/13
post-thumbnail

자료형 Data type

원시 타입 : number, string, boolean, null, undefined, symbol
참조 타입 : object

원시 타입

1. number

: 64비트 부동소수점으로 표현 (Java의 double에 해당)

숫자 리터럴

분류예시
지수 표기 (e)-1e9 === -1 * (10 ** 9)
지수 표기 (E)E-7 === 10 ** (-7)
2진수 (binary)0b111
8진수 (octal)0o127
16진수 (hexadecimal)0xff
특수 값NaN (Not a Number)
특수 값Infinity (무한대)

 

소수점 계산

64bit의 소수점 숫자를 2진수로 변환 (컴퓨터는 2진수 사용)
무한소수 생성 → 근삿값 계산으로 오차 발생
자릿수에 대한 보정 필요

① 10의 배수를 곱해 정수로 만든 후 계산
→ 곱한 수를 다시 나누어 실수로 변환

Math.round(num) 함수 사용

+num.toFixed(자릿수) 사용
(toFixed 메소드는 문자열을 반환하므로 단항연산자를 앞에 붙여 숫자로 변환)

 

2. string

: 작은따옴표나 큰따옴표로 표현

템플릿 문자열 template strings

  • `` 백틱으로 문자열 표현
  • 백틱 안에 플레이스 홀더 ${...}로 변수나 표현식 삽입
let myNum = 2;
console.log(`${myNum}의 두 배는 ${getTwice(myNum)}이다.`);

 

3. boolean

: 논리값 (true, false)

 

4. null vs undefined 값이 없다

  • null : 의도적 표현
  • undefined : 변수 선언 후 처음부터 값 할당 안됨
console.log(null == c);	 // true 동등
console.log(null === undefined); // false 불일치

 

5. symbol

: 유일한 값 (다른 어떤 값과 비교해도 true가 될 수 없는 고유한 변수)

→ 코드 내에서 유일한 값을 가진 변수 이름을 만들 때 사용

let sym = Symbol('변수에 대한 설명');

 

6. BigInt

: 길이의 제약 없이 정수를 다룰 수 있게 해주는 숫자형

→ 자바스크립트에서 -(2**53 - 1) ~ (2**53 - 1)의 숫자 범위를 초과하는 정숫값을 사용하면 연산에 미세한 오류 발생 → BigInt 도입

  • 일반 정수 마지막에 n을 붙이거나, BinInt() 함수를 사용하여 표현
  • 소수 표현 불가
  • BigInt 타입끼리만 연산할 수 있고, 서로 다른 타입끼리의 연산은 명시적으로 타입 변환을 해야함
  • 내장 Math 객체의 메서드와 함께 사용할 수 없음
const bigint1 = 9007199254740991n;
const bigint2 = BigInt(9007199254740991);

 


자료형 확인

typeof 연산자 : 자료형을 문자열로 반환

console.log(typeof 9);		// ‘number’
console.log(typeof null);	// 'object'
  • 연산보다 우선순위(procedence) 높음
  • null은 원시 타입으로 'null'로 반환되는 것이 합당하나, 초기 자바스크립트에서 null이 Null pointer로 표시되며 'object'값을 갖게됨

 

형변환

1. 숫자로 변환

→ Number(), parseInt(), parseFloat()

Number(true);	// 1
Number(false);	// 0
Number('two');	// NaN

parseInt(0033); // 27
parseInt(' 2'); // 2

parseFloat(123.12345); // 123.12345

2. 문자열로 변환

→ String(), toString()

let num = 100;
String(num);		// "100"
num.toString();		// "100"
num.toString(2);	// "1100100"

3. 불린으로 변환

→ Boolean()

  • Falsy 값 : "", 0, NaN, null, undefined
Boolean('');	// false
Boolean(0);		// false
Boolean(NaN);	// false

Boolean(100);	// true
Boolean([]);	// true

 

자동 형변환

산술 연산 & 관계 비교 연산

  • + 연산자 제외 다른 연산자 -, *, /, %, \**, <, >, <=, >= 들은 숫자로 자동 형변환
  • + 연산의 경우 string으로의 변환이 우선됨
// 산술 연산
console.log('4' ** true);	// 4
console.log(4 +2);		// ‘42’

// 관계 비교 연산
console.log('two' > '1');	// false (NaN > 1 비교불가)

같음 비교 연산

  • 일치, 불일치 ===, !== → 자료형까지 같은지 확인
  • 동등, 부등 ==, != → 자동 형변환
console.log(1 === '1');		// false
console.log(1 ==true);	// true
profile
해보자구

0개의 댓글