FrontEngineer JungBam
JavaScript의 타입 / 자료구조 본문
JavaScript의 타입 : 느슨한 타입의 동적 언어
☞ 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당 / 재할당 가능
어떤 값들이 있는가
원시값(언어의 최고 로우레벨에서 직접 표현되는 불변 데이터)
① Boolean
true / false 값으로 논리 값을 말함.
비교 연산자의 결과값으로 반환되는 값
※ Boolean 객체 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Boolean
「truthy와 falthy」
- truthy : falthy 값을 제외한 모든 값으로 논리값을 기대하는 문맥에서 true로 평가되는 값
- falthy : 0, -0, 0n, "", null, undefined, NAN(Not A Number)
② Null
null 값 : 의도적으로 비어있는 값을 이야기 한다.
③ Undefined : 선언한 후 값을 할당하지 않은 변수
④ Number / BigInt : 숫자 타입 / 범위의 차이
Number의 범위 : (-(2^53 − 1)부터 2^53 − 1까지의 수)
※ 유의할 점 : Number와 BigInt는 혼합해서 연산될 수 없음.
⑤ String : 텍스트 데이터 타입
⑥ Symbol : 적용할 수 있는 연산자가 없어 범용성이 떨어지고 그래서 사용되지 않음.
☞ 객체에 정의되어 있으나 객체의 프로퍼티나 메소드로 가져오는 방법으로 불러올 수 없음.
https://ko.javascript.info/symbol
예시 코드)
※ 리액트 - 바벨 (Symbol(react.app))
※ 리액트 $$type of Symbol
☞ https://velog.io/@chltjdrhd777/Symbol%EA%B3%BC-React%EC%9D%98-typeofe
★ 도전과제 : https://github.com/facebook/react 에서 first good issue 해결해서 풀리퀘스트 보내기
JavaScript가 데이터를 저장하는 방식(→ 모던 자바스크립트 P.37)
☞ 컴퓨터는 CPU를 사용해 연산하고 메모리를 사용해 데이터를 기억
☞ 메모리는 메모리 셀(1바이트 / b 비트)로 구성되어 있고 각 메모리 셀이 데이터를 저장
★ JavaScript에서 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙힌 이름
★ 배열이나 객체 같은 자료구조의 경우 데이터를 관련 있는 여러 개의 값으로 그룹화해서 하나의 값처럼 사용하는 것으로 그 값의 주소가 아닌 그룹의 범위를 갖고 있는 주소를 참조한다.
JavaScript의 형변환
※ 데이터의 타입 확인 하는 방법 : console.log(typeof 식별자)
① 암시적변환
산술 연산자
- 기억할 것은 + 연산자만 다르다는 것
+ 연산자는 우선순위가 문자형이다. 하지만 나머지 - * / % 는 숫자형이 우선이라는 것.
비교 연산자
- 동치 비교의 경우(==)
이때에는 falthy와 truthy의 개념을 알면 편하다. falthy와 falthy를 비교하는 것은 true이고 truthy와 truthy를 비교하는 것은 true로 값이 리턴된다.
★ 엄격한 동치 비교와의 차이점(===)
- 엄격한 동치는 데이터 타입의 형변환을 하지 않고 타입까지 비교하는 것으로 0==='0'은 falth를 가져온다.
② 명시적변환
→ 숫자
Number() : 정수형과 실수형의 숫자로 변환
parseInt() : 정수형의 숫자로 변환
parseFolat() : 부동 소수점의 숫자로 변환
→ 문자
String()
.toString() : 인자로 기수를 선택(몇진수로 설정할지)
.toFixed() : 인자값만큼 반올림 하여 소수점 표현
※ ex)
const a = 123.42323
a.toFixed(2) // 123.42
→ Boolean : Boolean()으로 감싸주면 된다. falthy 값들은 flase가 나오고 그 외의 값은 true를 반환
'자바스크립트 개념' 카테고리의 다른 글
var에서 let, const로 바뀐 이유 (0) | 2022.11.18 |
---|---|
깊은 복사와 얕은 복사 (0) | 2022.11.18 |
스코프, 섀도잉 (0) | 2022.11.12 |
혼공스(챕터5) 별도정리 : 타이머 함수 (0) | 2022.11.12 |
혼공스(챕터5) 함수 (0) | 2022.11.11 |