원시타입 : 숫자타입(number), 문자열(string), 불리언(boolean),
               undefined 타입, null 타입, 심벌타입(symbol)
객체타입 : 객체, 함수, 배열

01 number(숫자)

다른 언어는 정수실수를 구분하는 경우가 많지만 자바스크립트는 하나의 숫자 타입만 존재한다. 자바스크립트는 모든 수를 실수로 처리한다.

  • 0으로 시작하는 숫자는 없으므로 핸드폰 번호같이
    0으로 시작하는 기입을 원할 시에는 문자열(string)화 해야한다.
  • Infinity : 양의 무한대
  • -Infinity : 음의 무한대
  • NaN : 산술 연산 불가(not-a-number)

Number(); 숫자(number)화 하는 메서드
parseInt(); 숫자(number)화 하며 올림하는 메서드
parseFloat(); 숫자(number화 하며 버림하는 메서드

02 string(문자열)

텍스트 데이터를 나타내는 데 사용한다. 문자열은 작은따옴표(''), 큰따옴포("") 또는 백틱(``)으로 텍스트를 감싸 표현한다. 가장 일반적인 표기법은 작은따옴표('')를 사용하는 것이다.
일반 문자열 내에서 변수를 사용하게 될 경우에는 다음과 같이 연산자를 사용해 연결한다.

const name = 'Tia';
const sayHi = '안녕하세요 ' + name + '님!' 

템플릿 리터럴

백틱(``)을 사용하여 표현한다. 일반 문자열 내에서는 줄바꿈(개행)이 표현되지 않지만 백틱을 사용하여 표현하면 가능하다. 백틱 내에 변수를 사용할 경우에는 다음과 같이 한번에 표현할 수 있다.

const name = 'Tia'
const sayHi = `안녕하세요 ${name}님!`

이때 변수에 담긴 내용이 예를 들어 1+2 처럼 문자열이 아니더라도 문자열로 타입이 변경되어 표현된다.

03 boolean(불리언)

불리언 타입은 참, 거짓을 나타내는 truefalse뿐이다. 불리언 타입은 조건문에서 참/거짓을 구분하는 조건으로 많이 사용된다.

truthy / falsy

if문이나 for문 같은 조건문은 조건식의 평과 결과를 암묵적으로 boolean(불리언) 타입으로 변환한다. 이 때, 참으로 여겨지는 값을 truthy 라고 하고, 거짓으로 여겨지는 값을 falsy라고 한다. 아래는 falsy값으로 구분되는 값이다. 아래의 값을 제외하고는 모두 truthy로 분류된다.

  • false
  • undefined
  • null
  • 0, -0
  • NaN
  • ' ' (빈 문자열)

04 undefined

undefined 는 값이 할당되지 않은 변수에, 변수의 초기화를 위해 자바스크립트가 할당한 값이다.

05 null

null은 변수에 '값이 없다' 라고 의도적으로 명시할 때 사용하는 것이다. 값의 부재, 의도적 부재라고 표현한다.

06 symbol

ES6에서 추가된 7번째 타입으로 변경이 불가능한 '원시 타입의 값'이다. 다른 값과 중복되지 않아 다른 프로퍼티나 객체 등과 충돌할 위험이 없다.

07 object

앞서 설명한 원시 타입의 값을 제외한 모든 값은 객체이다. 함수, 배열, 객체 등의 모든 표현이 그렇다. 객체 타입은 다양한 값을 하나의 구조로 정리한 참조 자료형이다. 원시 타입의 값은 변경이 불가능하지만 참조 자료형인 객체 타입은 변경이 가능한 값이다.

객체는 property의 집합이며, propertykeyvalue로 이루어져 있다.
이때 property값, 즉 value는 자바스크립트 내에서 사용할 수 있는 모든 타입이 가능하다. propertykey와 그 key의 값인 value로 이루어져 있으며, ,로 구분된다.

✔️ 동적 타입 언어( dynamic / weak type )

자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다. 이것을 타입추론(type inference)라고 한다. 재할당에 의해 변수의 타입은 언제든지 동적으로 변한다( dynamic typing ). 그렇기 때문에 값을 확인하기 전에는 타입을 확신할 수 없다. 이는 유연성(flexibility)을 높여주지만 신뢰성(reliablity)을 떨어트린다. 따라서 변수를 사용할 때는 다음을 지켜 선언하도록 해야한다.

❗️ 변수 선언시 주의할 점 !

  • 변수의 무분별한 남발 금지! 필요한 만큼 최소한으로 유지하도록 주의
  • 변수의 scope( 유효위 )는 최대한 좁게 만들어 변수의 부작용을 억제
  • 전역 변수 사용 최소화
  • 변수보다는 상수를 사용해 값의 변경 억제
  • 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍

typeof : 데이터 타입을 확인할 때 사용!

🌱 정적 타입 언어 ( static/ strong type )

변수의 타입을 변경할 수 없으며 변수에 선언한 타입에 맞는 값만 할당할 수 있다. 컴파일 시점에 타입 체크( 선언한 데이터 타입과 맞는 값을 할당했는지 검사하는 처리 )를 수행하고 만약 이를 통과하지 못했다면 에러를 발생시키고 프로그램의 실행 자체를 막는다. 이러한 타입의 일관성 강제를 통해 더욱 안정적인 코드를 구현하고 런타임에 발생하는 에러를 감소시킨다.

0개의 댓글