'유연성'이란 개발자들이 상당히 좋아하는 단어이다. JavaScript는 이러한 개발자들에게 유연성을 제공해준다고 한다. 그런데 나는 그동안 JavaScript를 쓰면서 '유연하다'라는 느낌을 크게 받지는 못했던 것 같다. 그렇다면 왜? 어떤 부분에 있어서? JavaScript가 유연하다고 하는 것일까? 나는 그동안 왜 이 '유연성'을 크게 느끼지 못했을까?
JavaScript는 동적 타이핑 언어이며, 다른 프로그래밍 언어와 비교했을 때, 그 특징 중 하나로 데이터 타입이 상대적으로 유연하다. 이 말은, 변수를 선언할 때 데이터 타입을 명시적으로 지정하지 않아도 된다는 것을 의미한다.
이러한 JavaScript의 장점을 잘 숙지하기 위해, Data Type부터 차근차근 알아가보고자 한다.
Java Script의 데이터 타입은 크게 Primitive Type(원시 타입, 기본형)과 Object Types / Reference Type(객체 타입, 참조형)으로 분류된다.
Primitive Type은 변경 불가능한 값(immutable values)으로, 변수에는 실제 데이터 값이 저장된다.
Object Type은 이름과 값의 집합으로 구성되며, 다양한 데이터와 기능을 하나의 단위로 묶어 표현하는 유연한 자료구조이다.
숫자를 나타내는 Data Type이다.
JavaScript는 숫자 형태의 값을 계산할 때 계산하는 방식이나 우선순위에 있어서 기본적인 사칙연산을 따른다.
문자열을 나타내는 Data Type이다.
문자열은 우리가 사용하는 글자들을 값으로 표현할 때 쓰는 자료형이다.
' '
혹은 " "
로 둘려쌓여 있는 것은 모두 문자열로 볼 수 있다.
문자열을 출력할 때 template strings
를 사용하면 더욱 가독성 있는 clean code를 짤 수 있다.
// bad example
let bad_ex = "제 나이는" + age + "살이고, 키는 " + height + "cm입니다!"
// good example (by using template strings)
let good_ex = `제 나이는 ${age}살이고, 키는${height}cm입니다.`
문자열 내부에서 변수나 표현식을 사용하려면 백틱을 사용하는 템플릿 리터럴 방식
을 사용할 수 있다.
💡 cf> 템플릿 리터널 방식이란?
템플릿 리터럴이란 자바스크립트에서 문자열을 입력하는 방식이다. 기존에는 var str = 'Hello ES6'와 같은 방식으로 사용하였으나 ES6에서는 백틱(back-tick)이라는 기호(`)를 사용하여 정의한다.const str = `Hello ES6`;
위와 같이 백틱을 이용하게 되면 여러 줄에 걸쳐 문자열을 정의할 수도 있고, 자바스크립트의 변수를 문자열 안에 바로 연결할 수 있는 이점이 생긴다.
참과 거짓을 표현하는 Data Type.
참(true) 또는 거짓(false)만을 값으로 가진다.
값이 할당되지 않은 상태의 Data Type.
JS는 변수를 초기화할 때 암묵적으로 값이 할당되지 않은 상태인 undefined
를 할당한다. 이는 자바스크립트 엔진이 사용하는 값으로, 개발자가 의도적으로 할당하지 않는 것이 좋다.
값이 없는 상태의 Data Type.
undefined
처럼 값이 없는 상태를 나타내지만, 개발자가 의도적으로 표현할 때 사용한다.
Object Type에 대한 자세한 내용, 그리고 Primary Type과 Object Type에 대한 차이점은 추후 객체에 대해 먼저 학습한 뒤 추후 게시글을 통해 더욱 자세히 알아보고자 한다.