fffo
데이터 타입 본문
데이터 타입
- 원시 타입
- number
- string
- boolean
- undefined
- null
- symbol : ES6에서 추가된 타입
- 객체 타입 : 객체, 함수, 배열 등
number
- 배정밀도 64비트 부동소수점 형식을 따름
- 모든 수를 실수로 처리, 정수만 표현하기 위한 데이터 타입이 별도로 존재하지 않음
- 2진수, 8진수, 16진수 리터럴은 모두 메모리에 배정밀도 64비트 부동소수점 형식의 2진수로 저장되어 값을 참조하면 모두 10진수로 해석됨
const binary = 0b1000001; const octal = 0o101; const hex = 0x41; console.log(binary); // 65 console.log(octal); // 65 console.log(hex); // 65 console.log(octal == hex); // true
- Infinity : 양의 무한대 예약어
- -Infinity : 음의 무한대 예약어
- NaN : 산술 연산 불가(not a number) 식별자. 값이 아닌 식별자임에 유의
string
- 원시 타입, 변경 불가능한 값임(C언어는 문자의 배열로 문자열 표현, java는 객체로 표현)
- 문자열이 생성되면 그 문자열을 변경할 수 없음
- 가장 일반적인 방법은 작은 따옴표로 감싸기
template literal
- ES5부터 템플릿 리터럴이라는 새로운 문자열 표기법 도입
- 멀티라인 문자열, 표현식 삽입, tagged template 등 편리한 문자열 처리 기능 제공
- 템플릿 리터럴은 런타임에 일반 문자열로 변환되어 처리됨
- 백틱()을 사용해 표현
- 일반 문자열 내에서는 개행하려면 escape sequence 사용해야 하지만 백틱은 그냥 가능
- 표현식 삽입 : ${ }
- 표현식의 평가 결과가 문자열이 아니더라도 문자열로 강제 변환됨
const first = 'wlrma'; const last = 'dl'; console.log(`${first} ${last} is my sun`);
boolean, undefined, null, symbol
- var로 선언한 변수는 선언이 되는 순간 암묵적으로 undefined로 초기화 됨
- undefined는 js 엔진이 변수를 초기화 할 때 사용하는 값이기 때문에 개발자가 의도적으로 변수에 할당하는 것은 지양
- null은 변수에 값이 없다는 것을 의도적으로 명시 할 때 사용
- 함수가 유효한 값을 반환 할 수 없을 때 명시적으로 null을 반환하기도 함
- symbol은 변경 불가능한 원시 타입의 값.
- 다른 값과 중복되지 않는 유일무이한 값. 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용.
- symbol 이외의 원시 값은 리터럴을 통해 생성하지만 심벌은 Symbol함수를 호출해 생성
데이터 타입의 필요성
- 데이터 타입에 의한 메모리 공간의 확보와 참조
- 데이터 타입에 의한 값의 해석
동적 타이핑
- 선언이 아닌 할당에 의해 타입이 결정됨(타입 추론type inference)
- 재할당으로 변수의 타입을 동적으로 변경 가능(동적 타이핑 dynamic typing)
- 변수는 타입을 갖지 않음. 값이 타입을 가짐.
- 유연성은 높지만 신뢰성이 떨어질 수 있음
- 변수 사용 주의사항
- 최소한의 변수 사용 - 재할당으로 인한 타입 예측에 어려움 방지
- 변수 스코프 최대한 좁게
- 전역변수 최소화
- 변수보다 상수 사용 지향
- 변수 이름을 적절히 명명
'Programming > Javascript' 카테고리의 다른 글
제어문 (0) | 2021.09.23 |
---|---|
연산자 (0) | 2021.09.22 |
표현식과 문 (0) | 2021.09.20 |
js 실행환경, 변수 (0) | 2021.09.19 |
자바스크립트 개요 (0) | 2021.09.17 |
Comments