Data type
What is Data type?
값의 종류를 뜻합니다. 모든 값은 타입을 가집니다. 값은 크게 2가지로 구분할 수 있습니다.
immutable value(변경 불가능한 값) - 값을 대체하여 새로운 값으로 변수에 재할당은 할 수 있어도, 원시 값 자체를 바꿀 수는 없습니다. 이는 값의 신뢰성을 높입니다.
Ex) 문자열의 경우 이터러블한 유사배열 객체로 사용이 가능하지만, 문자열 자체가 immutable한 value기 때문에 문자열 자체를 수정할 수는 없습니다. 그러나 수정하려고 할 때 에러를 주진 않습니다.
변수에 값 자체가 저장 - 변수는 변수가 기억하고 있는 메모리 주소를 통해 메모리 공간에 저장된 실제 원시값에 접근할 수 있습니다. 값 자체에 접근이 가능하므로 값을 비교할 수 있습니다.
다른 변수에 할당하면 원시 값이 복사되어 전달(pass by value) - 다른 변수에 원래 값을 할당한 뒤, 나의 값을 바꾸어도 다른 변수에 할당된 값은 바뀌지 않습니다.
원시 래퍼 객체(object wrapper)를 가지고 있어 메소드를 가지고 있어도 가볍게 사용이 가능합니다.
원시 래퍼 객체
원시 값에도 유용한 메서드를 등록하고 가볍게 원시값으로도 사용하고 싶어서 나온 개념입니다. 원시값을 감싼 객체가 메서드를 호출해주고, 호출된 후에 래퍼 객체는 파괴됩니다.
원시형을 굳이 객체로 생성하면 생성 방법이 더 번거로운 문제도 있지만, 값을 비교할 때 원시값으로 계산하지 않고 객체로 계산되어 예상치 못한 결과가 생성됩니다.
Why do you need data type?
값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
Dynamic type
javascript는 동적 타입 언어입니다. 따라서 변수가 선언될 당시가 아닌 할당에 의해 타입이 결정됩니다. (type infrerence)
Type 확인하기
typeof 연산자를 활용합니다.
타입 변환
explicit coercion(, type casting)
명시적 타입 변환은 개발자가 의도적으로 값의 타입을 변환하는 것입니다.
문자열 타입으로 변환
String 생성자 함수를 new 연산자 없이 호출
Object.prototype.toString 표준 빌트인 메서드 사용
문자열 연결 연산자 사
숫자 타입으로 변환
Number 생성자 함수를 new연산자 없이 호출
parseInt, parseFloat 함수 사용(문자열만 가능함)
+ unary arithmetic operator
\* arithmetic operator
boolean 타입으로 변환
Boolean 생성자 함수를 new 연산자 없이 호출
! 부정 논리 연산자 두 번 사용
implicit coercion(, type coercion)
암묵적 타입 변환은 자바스크립트 엔진에 의해 자동으로 변환하는 것입니다. 원시 타입 중 하나로 타입을 자동 변환합니다.
문자열 타입으로 변환
숫자 타입으로 변환
불리언 타입으로 변환
조건식의 평가 결과는 불리언 타입으로 암묵적 변환됩니다. falsy값 외의 모든 값은 true로 변환됩니다.
false
undefined
null
0, -0
NaN
''
Last updated