JavaScript의 자료형과 JavaScript만의 특성

2022. 11. 18. 13:36웹 개발/javascript

이번 포스팅에서는 자바스크립트의 자료형과 자바스크립트만의 특성에 대해 알아볼 것이다.

 

1. 느슨한 타입(loosely typed)의 동적(dynamic) 언어

JavaScript는 느슨한 타입(loosely typed)의 동적(dynamic) 언어이다.

자바스크립트에서의 값은 문자열이나 숫자형 같은 특정한 자료형에 속한다. 그러나 우리가 사용할 때의 변수는 어떤 순간에는 문자열일 수 있고, 다른 순간엔 숫자가 될 수도 있다. 따라서 변수는 자료형에 관계없이 모든 데이터일 수 있다.

이처럼 자료의 타입(문자열, 숫자형 등)은 있지만 변수에 저장되는 값의 타입은 언제든지 바꿀 수 있는 언어이기 때문에 동적(dynamic) 언어라고 부른다. 또한 변수 사용 시에 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당(과 재할당)이 가능한 느슨한 타입(loosely typed)라고 할 수 있다.

 

2. JavaScript의 형 변환

1에서 느슨한 타입(loosely typed)에 대해 말했듯이, 자바스크립트는 타입이 매우 유연한 언어이다.

때문에 자바스크립트는 엔진이 필요에 따라 '암시적 변환' 혹은 개발자의 의도에 따라 '명시적 변환'을 실행한다.

2-1. 암시적 변환

- 자바스크립트의 엔진이 필요에 따라 자동으로 데이터타입을 변환시키는 것

== 산술 연산자 ==
더하기(+) 연산자는 숫자보다 문자열이 우선되기 때문에, 숫자형이 문자열을 만나면 문자형으로 변환하여 연산된다. / ( 문자 > 숫자 )
== 다른 연산자( - , * , / , % ) ==
숫자형이 문자형보다 우선시되기 때문에 더하기와 같은 문자형으로의 변환이 일어나지 않는다. / ( 문자 < 숫자 )

+ 동치 비교 ( "==" 와 "===")

  • "==" 연산자를 이용하여 서로 다른 유형의 두 변수의 "값" 비교
  • "===" 두 값을 비교할 때 데이터타입을 변환하지 않는 엄격한 동치 비교. "값+자료형"

2-2. 명시적 변환

- 개발자가 의도를 가지고 데이터타입을 변환시키는 것이다.

타입을 변경하는 기본적인 방법은 'Object(), Number(), String(), Boolean()' 과 같은 함수를 이용하는데 new 연산자가 없다는 사용한 함수는 타입을 변경하는 함수로써 사용된다.
더보기

== Type -> NumberType ==

1. Number()

 - 정수형과 실수형의 숫자로 변환

2. parseInt()

 - 정수형의 숫자로 변환 / 문자열이 "숫자 0"으로 시작하면 8진수로 인식하고, "0x, 0X"로 시작하면 해당 문자열을 16진수 숫자로 인식한다.

3. parseFloat()

 - 부동 소수점의 숫자로 변환 / 항상 10진수 사용

 

== Type -> StringType ==

1. String()

2. toString()

 - 인자로 진수를 선택할 수 있다. 인자를 전달하지 않으면 기본값으로 10진수로 변환된다.

3. toFixed()

 - 인자값만큼 반올림하여 소수점을 표현한다.

 

== Type -> Boolean Type ==

1. Boolean()

 

3. 느슨한 타입(loosely typed)의 동적(dynamic) 언어의 문제점과 보완할 수 있는 방법

실행 도중에 변수에 예상치 못한 타입이 들어와 타입 에러가 발생할 수 있다.

동적 언어는 런타임 시 확인할 수 밖에 없기 때문에, 코드가 길고 복잡해질 경우 타입 에러를 찾기가 어려워 진다.

이러한 불편함을 해소하기 위해 TypeScriptFlow 등을 사용할 수 있다.

 

4. undefined와 null의 미세한 차이

undefined : 변수를 선언하고 값을 할당하지 않은 상태 ( 자료형이 없는 상태 )

null : 변수를 선언하고 빈 값을 할당한 상태 ( 빈 객체 )

 

### Reference

* 자료형

https://ko.javascript.info/types

 

자료형

 

ko.javascript.info

* JavaScript의 형 변환https://medium.com/gdana/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%ED%98%95%EB%B3%80%ED%99%98%EC%9D%80-%EB%91%90%EA%B0%80%EC%A7%80%EB%8B%A4-b46875be4a88

 

자바스크립트의 형변환은 두가지다

자바스크립트는 타입이 매우 유연한 언어이다. 때문에 때로는 자바스크립트 엔진이 필요에 따라 ‘암시적변환’ 을 혹은 개발자의 의도에 따라 ‘명시적변환’ 을 실행한다. 그렇다면 형변환

medium.com

 

'웹 개발 > javascript' 카테고리의 다른 글

스코프, 호이스팅과 TDZ  (0) 2022.11.18
JavaScript 객체와 불변성  (0) 2022.11.18
05-2 함수  (0) 2022.11.11
05-1 함수  (0) 2022.11.11
04 반복문  (0) 2022.11.10