[JavaScript] 자료형과 JavaScript만의 특성

YES31·2022년 11월 18일
0

javascript

목록 보기
1/4

자바스크립트의 특성을 담은 글이다. 몇개의 주제를 가지고 구글링 또는 책을 찾아보면서 알아낸 정보들이 담겨있다.😀

  • 나는 아직 velog가 서툴다... 나중에 이 게시글을 보면 웃을 나를 위해 남겨본다.
  • 부끄럽지? 힘내렴!ㅋㅋ 22.11.18

.
.
.

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

JS의 변수는 어떤 특정한 타입과 연결되지 않으며, 모든 타입으로 할당 및 재할당이 가능하다.

let foo = 42	// foo is num
foo = 'bar'		// foo is str
foo = true		// foo is bool

.
.
.

2. javaScript 형변환

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

✔암시적변환
암시적 변환이란 자바스크립트 엔진이 필요에 따라 자동으로 데이터타입을 변환시키는 것이다.

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

.
.
.

3. ==, ===

자바스크립트는 엄격한 비교와 유형변환 비교를 모두 지원하므로, 어떤 연산자가 어떤 비교조건에 사용되는지가 중요하다.
위에 말했듯이, ===는 변수 유형을 고려하는 반면, ==는 변수 값을 기반으로 유형을 수정한다.

  • '==' 연산자를 이용하여 서로 다른 유형의 두 변수의 [값] 비교
  • '==='는 엄격한 비교를 하는 것으로 알려져 있다 ([값 && 자료형] -> true).

.
.
.

4. 느슨한 타입(loosely typed)의 동적(dynamic)언어의 문제점은 무엇이고 보완할 수 있는 방법

동적언어를 이해하려면 정적인 타입도 생각해볼 필요가 있다. 정적인 타입의 언어로는 Java, C, C++, C#, Scala, Fortran, Haskell, ML, Pascal등이 있다.

🕶 정적타입 언어란?

정적타입 언어(Statically typed language)는 컴파일 시 변수의 타입이 결정되는 언어
따라서, 프로그래머가 변수에 들어갈 값의 형태에 따라 직접 변수의 타입을 명시해줘야 한다.

String nam = "첫 밸로그"
int num = 22.11.18

정적언어라는 것은 위에서 언급한 '타입' 즉 자료형을 컴파일 시에 결정하는 것이다.
컴파일 시에 자료형에 맞지 않는 값이 들어있으면 컴파일 에러가 발생한다.

  • 장점 :
    타입 에러로 인한 문제점을 초기에 발견할 수 있어 타입의 안정성이 높음
    컴파일 시에 미리 타입을 결정하기 때문에 실행속도가 빠름

  • 단점 :
    매번 코드 작성시 변수형을 결정해줘야 하는 번거로움이 있음

.
.

💡 동적타입 언어란?

동적타입 언어(Dynamically typed languages)는 컴파일 시 자료형을 정하는 것이 아니라 런타임 시 결정된다. 다음과 같이 타입 없이 변수만 선언하여 값을 지정할 수 있다.

	let num = 1029384756;
	num = "파면 팔수록 재미있는 개발"

첫 번째 줄에서 타입 선언이 없었지만 num이 1029384756 이란 숫자로 선언된다.
두 번째 줄에서 num을 문자열(string)으로 다시 선언하더라도 type error 없이 선언 및 컴파일 된다.

  • 장점 :
    런타임까지 타입에 대한 결정을 끌고 갈 수 있기 때문에 유연성이 높음
    컴파일시 타입을 명시해주지 않아도 되기 때문에 빠르게 코드를 작성할 수 있음

  • 단점 :
    실행 도중에 변수에 예상치 못한 타입이 들어와 타입에러가 발생할 수 있음

.
.
.

5. undefined와 null의 미세한 차이

#undefined
변수를 선언하고 값을 할당하지 않은 상태, 자료형이 없는 상태이다.

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

profile
🏀 주니어 개발자

0개의 댓글