본문 바로가기
Study/javascript

[JS] 모던 자바스크립트 Deep Dive 스터디 - 06장. 데이터 타입

by 박히밍 2023. 5. 10.
반응형

모던 자바스크립트 Deep Dive

 

 

내맘대로 정리하고 공부하는 모던 자바스크립트 Deep Dive 스터디

 

 

 


 

 

 

[JS] 모던 자바스크립트 Deep Dive 스터디 - 06장. 데이터 타입

 

06장. 데이터 타입

  • 데이터 타입은 값의 종류를 말한다.
  • JS의 모든 값은 데이터 타입을 갖는다.
  • JS는 7개의 데이터 타입을 제공하며 원시타입과 객체타입으로 나뉜다.
    • 원시타입
      • 숫자(Number) : 숫자, 정수, 실수 구분 없이 하나의 숫자 타입
      • 문자열(String) : 문자열
      • 불리언(Boolan) : 논리적 true / false
      • undefined
      • null : 값이 없음을 의도적으로 명시할 때
      • Symbol
    • 객체타입
      • 객체, 함수, 배열

 

 

 

 

6.1 숫자 타입

  • JS는 하나의 숫자 타입만 존재한다.
  • 모든 수를 실수로 처리 > 정수만을 표현하기 위한 데이터 타입이 별도로 존재하지 않음.
  • JS는 정수, 실수, 2진수, 8진수, 16진수 리터럴은 모두 메모리에 64비트 부동소수점 형식의 2진수로 저장하고 해당 리터럴들을 표현하기 위한 데이터타입을 제공하지 않기 때문에 이들의 값을 참조하면 모두 10진수로 해석된다.
var integer = 10 // 정수
var double = 10.12 // 실수

var binary = 0b01000001 // 2진수
var octal = 0o101 // 8진수
var hex = 0x41 // 16진수

console.log(binary) // 65
console.log(octal) // 65
console.log(hex) // 65
console.log(binary === octal) //true
console.log(octal === hex) //true
console.log(1 === 1.0) //true

// 숫자 타입의 다른 값

console.log(10 / 0) // Infinity: 양의 무한대
console.log(10 / -0) // -Infinity: 음의 무한대
console.log(1 * 'String') // NaN (Not-a-Number): 연산 불가 / nan,Nan,NAN은 인식 못 함

 

 

 

 

 

6.2 문자열 타입

  • 텍스트 데이터를 나타내는 데 사용 된다.
  • 작은따옴표(’’), 큰따옴표(””), 백틱(``)으로 텍스트를 감싸서 사용.
var string

string = "문자열"
string = '문자열'
string = "이것도 '문자열' 입니다."
string = '이것도 "문자열" 입니다.'

 

 

 

 

 

 

6.3 템플릿 리터럴

  • 백틱(``)을 사용
  • 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공
var temp = `Template`
console.log(temp) // Template
// 멀티라인 및 태그드 템플릿

var multiLine = `<ul>
	<li><a href="#">Link</a></li>
</ul>`

console.log(multiLine)

// 출력 결과

<ul>
	<li><a href="#">Link</a></li>
</ul>
// 표현식 삽입

const name = 'heeming'

console.log(`my name is ${name}!`) // my name is heeming !

 

 

 

 

6.4 불리언 타입

  • 논리적 참과 거짓을 나타내는 true, false

 

 

 

 

 

6.5 undefined 타입

  • var 키워드로 선언한 변수는 암묵적으로 undefined로 초기화 된다. 즉 선언에 의해 확보된 메모리 공간을 처음 할당이 이루어질 때까지 빈 상태로 두지 않고 자바스크립트 엔진이 undefined로 초기화한다.
  • 따라서 변수 선언 후 값을 할당하지 않은 변수를 참조할 경우 undefined를 반환한다.
var foo

console.log(foo) // undefined

 

 

 

 

 

6.6 null 타입

  • Null, NULL은 null과 다른 값이다.
  • JS에서 null은 변수에 값이 없다는 것을 ‘의도적’으로 명시할 때 사용한다.
  • 변수에 null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 뜻.

 

 

 

 

 

6.7 심벌 타입

  • 변경 불가능한 원시 타입의 값
  • 다른 값과 중복되지 않는 유일무이한 값이다.
  • 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용

 

 

 

 

 

 

6.9 데이터 타입의 필요성

  • 값은 메모리에 저장하고 참조할 수 있어야 하는데, 메모리에 값을 저장할 때 먼저 확보해야 할 메모리 공간의 크기를 결정하기 위해.
  • 즉, 메모리 공간을 적절히 낭비/손실 없이 저장하기 위해 필요하다.

 

 

 

 

 

 

6.10 동적 타이핑

  • JS는 동적 타입 언어이다.
  • JS의 변수는 선언이 아닌 할당할 때 타입이 결정 된다.(타입 추론)
  • 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. (동적 타이핑 / 동적 타입 언어)
  • JS는 개발자의 의도와는 상관없이 JS 엔진에 의해 타입이 자동으로 변환하기도 해서 주의해야 한다.
    • 변수는 필요한 경우에 한해 제한적으로 사용
    • 변수의 유효 범위를 최대한 좁게 만들어 사용
    • 전역변수는 지양한다.
    • 변수 보다는 상수를 사용할 것
    • 변수의 이름을 통해 변수의 목적과 의미를 파악하기 쉽게 작명할 것
반응형