[예시]
let foo = 42 // foo가 숫자
foo = 'bar' // foo가 이제 문자열
foo = true // foo가 이제 불리언
Boolean타입은 true와 false 둘 중 하나의 값을 갖는 논리적인 요소를 뜻한다.
A라는 물체가 물인지 아닌지를 표현한다고 하면
var isWater = true; ///이와 같이 true 또는 false로 나타내는 경우 사용한다.
Number 타입은 -(253 -1) 와 253 -1 사이의 숫자값 하나를 갖는다.
이 범위보다 크거나 작은 숫자라면 그 수는 더 이상 안전하지 않다.
때문에 매우 큰 수를 다루게 된다면, Number.isSafeInteger()를 사용하여 확인해볼 수 있다.
var ten = 10;
String 타입은 텍스트 데이터를 나타낼 때 사용한다.
var welcomeText = "안녕하세요 반갑습니다";
빈 값을 뜻하는 null타입이다. 이 경우, Null타입으로, 타입은 존재하지만, 값은 없다고 볼 수 있다.
Undefined는 값도 없고, 타입도 지정되지 않은 상태이다.
Symbol은 유일하고 변경 불가능한 기본값이다.
let Sym1 = Symbol("Sym")
let Sym2 = Symbol("Sym")
console.log(Sym1 === Sym2) // returns "false"
/// === 연산자는 타입과 값이 동일한지를 조사하는 연산자인데, 둘 다 Symbol("Sym")으로 같다고 생각할 수 있지만,
서로 다른 객체로 취급된다.
const hojune = {
"name": "호준",
"age": 27,
"gender": "남자",
"location": "서울"
}
식별자 : hojune
key 값 : name, age, gender, location String (타입 또는 Symbol 타입이 사용될 수 있다.)
"호준", 27, "남자", "서울"은 각 키에 해당하는 값이라고 불리며, 어떠한 자료형도 올 수 있다.
자바스크립트에서는 Undefined를 제외하고는 모두 객체이다.
자바스크립트(javascript)라는 언어의 가장 큰 특징 중 하나가 '타입 선언'이 필요없다는 점이다. 자바나 C 같은 언어는 정작 타입 언어로 변수 선언에 타입을 명시해야한다. 이 후 해당 변수에 호환 되지 않는 타입을 사용할 때 컴파일 에러가 발생한다.
int foo = 10;
foo = 10.3f // Error!!
foo = (int)10.3f // OK!!
위 코드를 예로 들면, int foo 로 선언된 변수에는 정수형 데이터만 담을 수 있다. 만약 1.02f 같은 실수형 데이터를 할당하면 컴파일 에러가 발생한다. 강제로 입력하기 위해서는 타입 변환(Type Casting)을 해야한다. 자바나 C 같은 언어의 기초 단계에서 배우는 내용이다.
var foo = 10;
var foo = 10.3;
var foo = "10.3";
자바 스크립트에서는 이렇게 변수의 타입이 런타임(Runtime)에 결정된다.
var a;
console.log(a); // undefined
console.log(typeof a); // undefined
프로그래밍을 하다보면 여러가지 경우에 데이터의 타입을 변화시켜야할 경우가 생깁니다. 자바스크립트에서 문자열을 숫자로, 숫자를 문자열로 바꾸는 등의 형을 변화시키는 방법은 크게 두가지가 있는데요.
연산의 결과에 의해 암시적으로 형이 변화하는 암시적 형변환과 개발자가 직접 형을 변화시켜주는 명시적 형변환 방법이 있습니다.
var a = 10 + "10"; //-> "1010"
var a = true + "10"; //-> "true10"
var a = true + 10; //-> 11
var n = "42";
+n //-> 42
/* 숫자를 문자열로 형변환 */
var n = 15;
// 숫자를 문자열로 변환한다.
n.toString(); //-> "15"
// 인수로 기수를 전달해 진법을 결정할 수 있다.
n.toString(16); //-> "f"
// 인수로 전달한 숫자만큼의 소수점 자리수를 포함한 문자열로 변환한다.
var n = 12.345
n.toFixed(1) //-> '12.3'
n.toFixed(3) //-> '12.345'
// 인수로 전달한 유효숫자만큼 표시한다.
n.toPrecision(1) //-> '1e+1'
n.toPrecision(3) //-> '12.3'
String(15); //-> '15'
String(true); //-> 'true'
parseInt와 parseFloat 함수를 사용해 문자열을 숫자로 변환합니다.
parseInt 함수는 문자열을 정수로 변환하고, parseFloat 함수는 문자열을 부동소수점으로 변환합니다.
/* parseInt */
parseInt("1010"); //-> 1010
// parseInt의 두번째 인자로 진수를 지정할 수 있습니다.
parseInt("16 volts", 10); // 16
// 문자열을 16진수로 해석해서 10진수로 변경
parseInt("3a", 16); //=> 58
/* parseFloat */
parseFloat("10.10"); //-> 10.1
Number("10.10"); //-> 10.1
Number(false); //-> 0
var d = new Date();
d.valueOf(); //-> UTC 1970/1/1 기준 밀리초
/* 불리언으로 형변환 */
var n = 0;
!!n; //-> false
Boolean(n) //-> false