-
2021_11_29 데이터 타입IT/js 2021. 11. 30. 02:53
개인적으로 데이터타입에서 알아야할 것들을 기록
1. js 에서의 데이터 타입은 줄여서 타입이라고 부르며 값의 종류를 말함
2. js 에서 모든 값은 데이터 타입을 가진다.
ex - 나는 YJ라는 인간이다. -> 인간이라는 타입
3. 7개의 데이터 타입이 있으며 6개의 원시타입과 1개의 객체 타입으로 구분 할 수 있다.
원시 타입 숫자 타입 (number) 숫자(정수와 실수) 문자열 타입 (string) 문자열 불리언 타입 (boolean) 참(true) 거짓(false) undefined 타입 값을 넣지 않은 변수에 할당되는 값 null 타입 의도적으로 값을 넣지않을때 사용되는 값 심벌 타입 (symbol) ES6에 추가된 7번째 타입 객체 타입 객체, 함수, 배열 등 위의 6가지 제외한 전부 4. 숫자 타입에서 알야할 것
- 정수, 실수, 음수, 2진수, 8진수, 16진수 표기 가능
- 숫자와 문자를 나누었을때 발생하는 에러 NaN(산술연산 불가 not-a-number)
- Infinity(양의 무한대), -infinity(음의 무한대)
5. 문자열 타입에서 알아야할 것
- 텍스트 데이터 타입을 말하는 것이며 ' ', " ", ` ` (작은따옴표, 큰따옴표, 백틱) 으로 표기 가능
- 따옴표, 백틱으로 감싸지 않을 경우 키워드, 식별자로 인식함
- 백틱은 es6 즉 2015년 부터 도입되었음
- ` ` 사용 하는 것은 템플릿 리터럴이라고 하며 백틱 내부에서 개행이 가능하다 (따옴표는 불가능)
- 따옴표에서 개행을 하기 위해선 \n 이라는 개행 이스케이프 시퀸스를 사용하여야 한다.
- 이스케이프 시퀸스는 \\, \', \" (문자열 내부에서 \, ', " 사용), \n(개행) 정도로만 알면 된다.
- 따옴표 문자열에서 이스케이프 시퀸스를 사용하거나 백틱에서 엔터쳐서 하는것은 같은 결과값을 가진다
Var first = ‘hello; Var last = ‘world’; // 문자열 Console.log(‘My name ‘ + first + ‘ ‘ + last ); // My name hello world // 백틱 Console.log(`my name ${first} ${last}.`); // My name hello world // 하면 같은 값이 나온다 문자열이 아니더라도 타입이 강제로 변환- 백틱 외에 ${first} 입력할 경우 '${first}' 가 통째로 출력된다
6. 불리언 타입
- 다른 언어를 접하고 와서 인지 불리언 타입보다 bool 타입이라고 읽는게 마음 편하다 짧기도하고
- true, false를 정하는 타입인데 조건문(if)에서 굉장히 많이 사용된다.
7. undefined 타입, null 타입
- undefined 타입의 값은 undefined가 유일하다
- null 타입의 값은 null이 유일하다 (대소문자 구별하니 null 필히사용)
let a; // undefined // 변수 선언 후 값을 넣지 않을 경우 undefined 타입 let a = null; // null // 변수 선언 후 초기화 및 의도적으로 빈값을 넣었다는 것 (코드의 명확성)- 즉, 초기화되지 않은 변수
- 의도적이든 아니든간에 값을 넣지 않을 경우 undefined 타입이 들어간다
- 정확히 해당 변수는 빈값을 넣어 주기로 했다 라는 null 값을 대입 시켜 코드를 확실시 하자
8. 심벌 타입
- 변경 불가능한 원시 타입의 값
- 다른 값과 중복되지 않는 유일무이한 값
let a = Symbol('abc'); let b = Symbol('abc'); a === b; // false- a와 b는 다른 주소를 가지고 잇지만 가르키고 있는 값은 abc 같은 값을 가진다.
- 하지만 Symbol 타입이기때문에 false가 나온다.
참고. js는 같은 값을 가지고있으면 변수의 주소는 다를지라도 가르키고 있는 주소는 같다
let x = 100; let y = 100; 값 100의 주소값은 0x123 x의 주소 값은 0x111, 주소값 0x111 메모리에 담겨 있는 것은 0x123이라는 위치 y의 주소 값은 0x112, 주소값 0x112 메모리에 담겨 잇는 것은 0x123이라는 위치9. 객체 타입
- 자바스크립트를 이루고 있는 거의 모든 것이 객체
- 상단 6가지 타입 외에는 모두 객체 타입이다.
10. 데이터 타입의 필요성
- 데이터 타입이 필요한 이유는 메모리에 값을 저장할려면 먼저 확보해야할 메모리 크기를 결정해야함
- 타입에 따라 메모리의 낭비와 손실 없이 값을 저장할 수 있기때문이다.
- 참 의문인게 number는 부동소수점 형식을 따르는데 문자는 표준화가 안되었다는게 의문 (제조사 마다 다름)
- 그런데 데이터타입을 강조하는것도 더 의문
- 숫자는 8바이트 단위로 메모리를 잡아서 효율적으로 메모리 이용 ( 64비트 0000 0000 0000 0000 ..... 0000 0000 )
- 메모리에 저장된 값이 0100 0001 이면 숫자로는 65지만 문자열로 해석하면 'A' 그러므로
- 변수를 선언할때 문자열인지 숫자인지 잘 정해줘야한다.
11. 동적 타입 언어, 정적 타입 언어
- 다른 언어들은 정적 언어 타입이라 하여 string(문자열), int(정수), float(실수), unsigned int(양의 정수) 타입을
- 변수 선언과 동시에 타입을 정해줘야한다.
- js는 동적 언어 타입이라 하여 변수가 지정 된 후 타입을 결정한다 (파이썬, 루비, js 등이 있음)
- 동적 언어 타입이 편하기는 하지만 코드가 길어질 수록 값 100이 숫자인지 문자열인지 언제 다시 파악하는가...
- 동적 언어는 편리한 타입 지정으로 인해 신뢰성은 하락하지만
- 정적 언어는 정확한 타입 지정으로 코드의 신뢰성이 상승한다. (타입의 일관성 강제)
- 그러므로 우리가 사용하는 js에서 변수를 사용할때의 주의사항
- 변수의 사용을 최소화 할 것
- 변수를 사용했으면 해당 변수의 사용범위를 최소화 할 것
- 전역 변수 사용을 자제할 것
- 변수 보다는 상수 값을 사용할 것 (const - 변하지 않는 값)
- 변수 이름을 명확하게 지을 것 (ex - button_name)
- 가독성 좋은 코딩하기 화이팅
'IT > js' 카테고리의 다른 글
2021_12_14 생성자 함수에의한 객체 생성 (0) 2021.12.14 2021_12_08 윤년계산 알고리즘 (0) 2021.12.08 2021_12_07 변수의 생명주기 (0) 2021.12.07 2021_12_04 node, npm 용어가 cmdlet... 에러 (0) 2021.12.04 2021_12_01 js 시간값 얻어오기 (0) 2021.12.01