종류
- 원시타입(Number, String, Boolean, null, undefined, symbol, BigInt) 그리고 객체타입 총 8개
숫자 타입
- 값의 저장 형태
- 배정밀도 64bit 부동소수점 형식(double precision 64bit floating point)
- 모든 수가 실수로 처리된다.
- 특이한 숫자 값 3가지
- NaN
- Infinity
- -Infinity
문자열 타입
- 16bit 유니코드 문자??
- 자바스크립트언어에서 문자열은 immutable value이다.
Line Feed와 Carriage Return
- 각 운영 체제마다 LF와 CR의 사용 유무가 다른데 텍스트 에디터에서 운영체제에 맞게 개행을 잘 변환해 준다고 하니 걱정 할 건 없다.
ASCII 코드 (American Standard Code for Information Interchange)
- 정보 교류를 위한 미국 표준 코드? 거대한 표준 코드 정도로 아는중
EscapeSequence
- 백슬래쉬와 특정 기호를 사용해 표현하기 까다롭지만 자주쓰는 문자열을 간단히 표현 할 수 있다.
숫자와 문자열의 연산 우선순위
- 문자열과 숫자사이에 덧셈 연산자가 있으면 문자열로 연결이 된다. 덧셈 이외에 다른 빼기 곱하기 나누기 등의 연산자는 문자타입인 숫자와 숫자타입의 숫자와 숫자형식으로 계산이 됨
언어마다 선언과 정의의 기준이 다르다.
- 자바스크립트는 선언을 할 때 메모리 주소값고 식별자와의 연결이 이루어 지는 반면에 C언어와 JAVA는 메모리에 접근 화는 프로세스가 다르기 때문에 선언과 정의이 기준이 다르다. ECMAScript에 따르면 변수를 선언 한다고 하고 함수는 정의한다고 표현 함.
심벌 타입
- 다른 값과 중복 되지않는 유일무이한 값이라고 하는데? 확보한 메모리 내부에 있는 2진수로 나열된 형식이 중복 되지 않는 다는 말인건가?
- 다른 원시타입들은 리터럴을 사용해 값을 할당하는데(BigInt 타입은 잘 모르겠다.) symbol 타입은 함수를 호출해서 값을 생성한다고 한다. 특이한 놈일세
데이터 타입이 왜 필요 할까?
- 메모리 사이즈의 크기를 규정함으로써 메모리 공간의 손실을 줄일 수 있다.
데이터 타입이 하는 일은 무엇일까?
- 값을 저장하기 위한 메모리 사이즈를 정함
- 값을 참조하기 위한 메모리 사이즈를 정함
- 값을 참조해서 읽어 드린 메모리 값을 어떤 데이터 타입에 따라 해석할 지를 정함
문자와 숫자 이외의 타입들은 메모리 사이즈가 다를 수도 있다고?
- 다른 타입들은 제조된 자바스크립트의 엔진에 따라서 확보하는 메모리의 크기가 다를 수도 있다고 한다? 굳이 왜 그렇게 만들었을까? 조금 더 효율 적으로 메모리공간의 손실을 관리 하기 위해서라고 생각되는데 그렇게 큰 차이가 있을까?
각 타입에 따라 메모리 주소를 어떻게 찾아 갈까?
- 숫자 타입으로 치면 8Byte 즉 8개의 메모리 셀을 사용 한다는 건데 이말은 8개의 메모리 주소가 있다는 것?? 변수에 8개의 주소를 다 이어 붙이는 것이 아닌 제일 선두에 있는 메모리 주소만 찾는다고 한다.
값의 메모리 주소는 그럼 어디서 관리 하는 것일까?
- 자바스크립트 인터프리터가 심벌 테이블을 사용해서 값의 메모리주소, 데이터 타입, 스코프 등 여러가지를 관리 한다고 하는데 심벌의 원리를 제대로 배워야 이해가 높아 질듯 하다.
동적 타이핑(dynamic typing)
- C언어와 자바스크립트 같은 정적 타입의 언어와는 다르게 자바스크립트는 동적 타입 언어이다. 정적 타입 언어에서 지정된 변수는 해당 타입에 따른 값만 할당이 가능한데 동적 타입 언어는 값의 타입이 값이 할당 될 때마다 해당 값에 따라 동적으로 타입이 변환 된다.
- 왜 dynamic type이 아닌 dynamic typing인가에 대한 의문이 있었는데 선언이 아닌 할당에 의해 타입이 결정 되기 때문에 진행형인 ing를 붙인 것 같다.
동적 타이핑 언어의 유의 사항
- 타입이 동적으로 변하는 만큼 복잡한 프로그램에서 변수의 타입을 추적하기가 힘들다 따라서 업무의 효율성을 높이기 위해서 가독성이 좋은 코드가 정적인 언어보다 더 중요시 된다.
typeof로는 클래스와 함수도 타입인데 자바스크립트에서 말하는 원시 타입과 객체 타입에서 못본것 같다. 배열이 객체 타입이듯이 객체타입에 속하지 않을까?
'메타 스터디 > JavaScript' 카테고리의 다른 글
제어문(control flow statement) (0) | 2022.05.10 |
---|---|
연산자 (0) | 2022.05.07 |
표현식과 문 (0) | 2022.05.03 |
변수 (0) | 2022.05.03 |
자바스크립트란? (0) | 2022.04.29 |
댓글