TIL no.17 - JS 데이터 타입

김종진·2020년 12월 22일
0

JavaScript

목록 보기
9/18

데이터 타입 (Data Type)

자바스크립트는 총 7개의 데이터 타입이 있다.

  • Number (수)
  • String(문자열)
  • Boolean(논리형)
  • Symbol
  • Null
  • Undefined
  • Object(객체)

1. Number

숫자나 산술 연산을 하는데 사용하는 데이터 타입이다.

2. String

문자열을 표현하는데 사용하는 데이터 타입이다.
"" , '' 사이에 값을 넣어 표현할 수 있다.

3. Boolean

Boolean는 true 또는 flase와 같이 참/거짓을 의미하는 논리형 데이터 타입이다.

4. null , undefined

이 두 타입은 모두 자바스크립트에서 '값이 없음'을 명시합니다.

null은 개발자가 변수에 값이 없다는 것을 명시 할때 사용한다.
undefined는 변수에 어떠한 값도 할당되지 않은 상태를 의미한다.

null 과 undefined의 차이는?

우선 둘은 다르다!
null은 자료형은 객체인데 값이 비어있는 변수이고 undefined는 자료형이 결정되어 있지 않은 변수이다.

let a = null;
alert(a); // null
alert(typeof a); // object
let b 
alert(b); // undefined
alert(typeof b); // undefined

나는 물병을 생각했을 때 물이 없는 물병은 null
그냥 물병 자체가 없는거를 undefined로 생각해봤다.

5. Object

중괄호 안에 다수의 프로퍼티(property)나 메소드(method)를 하나의 변수로 지정해놓는 일종의 집합체라고 할 수 있다.

let me = {firstName:"Kim", lastName:"Jonggjin", age: 30}

객체는 자바스크립트에서 매우 중요한 요소이기 때문에
추후 제대로 다뤄보기로 하겠습니다.

동등연산자와 일치연산자

등호는 같다는 의미죠. 자바스크립트에서는 이 동일함을 나타내는 연산자가 2가지가 있습니다.

동등연산자 (==)

동등연산자의 경우는 연산자를 비교할 때 자바스크립트 엔진에 의해 암묵적으로 타입 변환이 먼저 이루어진다. 서로의 변수의 타입이 다르더라도 값만 같다면 true를 반환한다.

let a = 100; // 숫자
let b = '100'; // 문자열

console.log( a == b ); // true

일치연산자 (===)

일치연산자의 경우는 한층 더 엄격하다고 보면 된다. 서로의 값과 타입이 모두 같은 경우에만 true를 반환하다.

let a = 100; 
let b = '100';
let c = 100;

console.log( a === b ) // false
console.log( a === c ) // true

헷갈릴만한 데이터타입 비교

console.log(null == undefined);  // true
console.log(null === undefined); // false 

null과 undefined는 값이 없음을 나타내지만 null은 객체 타입이고 undefined는 타입도 정해지지 않았으니 이런 결과가 나온다.

a = 1;
b = "2"
console.log( a + b ); // 12
console.log( a - b ); // -1
console.log( a * b ); // 2
console.log( a / b ); // 0.5

숫자와 문자열의 합은 문자열을 합친거과 같은 결과가 나온다.
이외에 빼기, 곱하기, 나누기와 같은 연산은 두 변수다 숫자로 처리되어 계산된다.

console.log(0.1 + 0.2 === 0.3); // false
console.log(0.1 + 0.3 === 0.4); // true

이건 처음에 이해가 안됬는데 0.2가 2진수로 변환될 때 무한한 숫자가 되어 이를 내부적으로 유한한 숫자로 바꾸기위해 끝부분을 계속 자르기 때문에 아주 미세한 오차가 발생하여 false값이 발생한다.
0.1과 0.3의 경우는 2진수에도 무한한 숫자가 아니기에 true값이 나온다

console.log('Js' === 'js'); // false

소문자와 대문자도 일치연산자에서는 같지 않다고 한다.

profile
FE Developer

0개의 댓글