반응형
내맘대로 정리하고 공부하는 모던 자바스크립트 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 엔진에 의해 타입이 자동으로 변환하기도 해서 주의해야 한다.
- 변수는 필요한 경우에 한해 제한적으로 사용
- 변수의 유효 범위를 최대한 좁게 만들어 사용
- 전역변수는 지양한다.
- 변수 보다는 상수를 사용할 것
- 변수의 이름을 통해 변수의 목적과 의미를 파악하기 쉽게 작명할 것
반응형
'Study > javascript' 카테고리의 다른 글
[JS] toLocaleString() 날짜와 숫자의 현지화(천단위 콤마) (0) | 2023.07.06 |
---|---|
[JS] 모던 자바스크립트 Deep Dive 스터디 - 07장. 연산자(산술 연산자) (0) | 2023.05.15 |
[JS] 모던 자바스크립트 Deep Dive 스터디 - 05장. 표현식과 문 (0) | 2023.05.09 |
[JS] 모던 자바스크립트 Deep Dive 스터디 - 04장. 변수 (0) | 2023.05.08 |
[JS ES6] 자바스크립트 new 연산자와 생성자 함수 (Javascript new operator & constructor function) (0) | 2022.11.28 |