자바스크립트의 특성을 담은 글이다. 몇개의 주제를 가지고 구글링 또는 책을 찾아보면서 알아낸 정보들이 담겨있다.😀
- 나는 아직 velog가 서툴다... 나중에 이 게시글을 보면 웃을 나를 위해 남겨본다.
- 부끄럽지? 힘내렴!ㅋㅋ 22.11.18
.
.
.
JS의 변수는 어떤 특정한 타입과 연결되지 않으며, 모든 타입으로 할당 및 재할당이 가능하다.
let foo = 42 // foo is num foo = 'bar' // foo is str foo = true // foo is bool
.
.
.
자바스크립트는 타입이 매우 유연한 언어이다.
때문에 때로는 자바스크립트 엔진이 필요에 따라 ‘암시적변환’ 을 혹은 개발자의 의도에 따라 ‘명시적변환’ 을 실행한다.✔암시적변환
암시적 변환이란 자바스크립트 엔진이 필요에 따라 자동으로 데이터타입을 변환시키는 것이다.✔명시적변환
명시적변환이란 개발자가 의도를 가지고 데이터타입을 변환시키는 것이다.
.
.
.
자바스크립트는 엄격한 비교와 유형변환 비교를 모두 지원하므로, 어떤 연산자가 어떤 비교조건에 사용되는지가 중요하다.
위에 말했듯이, ===는 변수 유형을 고려하는 반면, ==는 변수 값을 기반으로 유형을 수정한다.
- '==' 연산자를 이용하여 서로 다른 유형의 두 변수의 [값] 비교
- '==='는 엄격한 비교를 하는 것으로 알려져 있다 ([값 && 자료형] -> true).
.
.
.
동적언어를 이해하려면 정적인 타입도 생각해볼 필요가 있다. 정적인 타입의 언어로는 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 없이 선언 및 컴파일 된다.
장점 :
런타임까지 타입에 대한 결정을 끌고 갈 수 있기 때문에 유연성이 높음
컴파일시 타입을 명시해주지 않아도 되기 때문에 빠르게 코드를 작성할 수 있음단점 :
실행 도중에 변수에 예상치 못한 타입이 들어와 타입에러가 발생할 수 있음
.
.
.
#undefined
변수를 선언하고 값을 할당하지 않은 상태, 자료형이 없는 상태이다.
#null
변수를 선언하고 빈 값을 할당한 상태(빈 객체)이다