본문 바로가기

Javascript

JavaScript의 자료형과 JavaScript만의 특성

자바스크립트 는 "느슨한 타입(loosely typed)의 동적(dynamic) 언어"이다.

"느슨한 타입(loosely typed)"이라는 것은 변수를 설정할 때에 어떠한 특정 타입에 연결되지 않는다는 것이며,

"동적(dynamic)"이라는 것은 변수를 최초 할당한 타입과 다르게 재할당이 가능하다는 것을 의미한다.

참고링크 (https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures)

 

 

그래서인지, 자바스크립트에는 ==,=== 두가지 등호가 있다.

 

 

==은 언어 내에서 임의적으로 형변환을 하여 인식해준다.

===은 임의적으로 해석하지 않는다.

예를 들어보자.

100 == "100" //True 
100 === "100" //False

최초의 타입을 직접 선언해줄 필요가 없기 때문에 편리하다. 그러나, 단점또한 존재한다.

 

 

예시를 들어보자,

프론트 단에서는 가격을 숫자가 아닌 문자인 '10000'으로 설정하였다면, 넘버를 요청한 백엔드 단에서 number값이 아니기 때문에 오류가 발생한다.

이러한 오류를 바로잡기 위해서, 타입스크립트를 사용하는 방법이 있다.

타입스크립트는 정확히 이해하지 못했으나, 간단하게 말하자면 자바스크립트의 변수들의 타입을 선언하여주는 기능을 한다.

 

아래는 타입스크립트와 자바스크립트의 차이점이다.

const a = 3; const b = '5'; 
console.log(a*b)

 

위 코드에서 자바스크립트는 15가 출력된다. 즉 넘버타입인 3과 스트링타입인 5를 같은 타입으로 계산하여 출력하는 것이다.

그렇기에 만약 계산을 하고싶지 않았던 의도로 코드가 작성되도, 계산이 되는 오류가 발생한다.

const a:number = 3; const b:string = '5'; 
console.log(a*b)

 

타입스크립트에서는 위와 같이 코드가 작동된다. 3의 타입과 '5'의 타입을 선언하여, 출력이 되기전 오류메시지가 띄워질 것이다.

동적타입인 자바스크립트보다 정적타입인 타입스크립트는 백엔드와 프론트간의 오류를 현저히 줄이게 해줄 것 같다.


 

JavaScript 형변환

자바스크립트는 느슨한 타입과 동적인 언어이기 때문에, 형변환에 있어 자유롭다.

그리고 우리는 암시적으로, 또는 명시적으로 형변환을 할 수 있다.

 

숫자 -> 문자

자바스크립트 형변환

 

const apple = 100 let result= apple+'' 
console.log(typeof(result)) 
//결과 String

 

공백 " " 을 더하니, 문자로 바뀌는 것을 알 수 있다.

 

 
let apple = 100 let 
result= String(apple) 

console.log(typeof(result))

let apple1 = 100 
let result1= apple.toString() 

console.log(typeof(result1))

위와 같이, String() 또는 .toString() 을 사용하여 변수의 타입을 바꿔줄 수 있다.

 

문자 -> 숫자

자바스크립트 형변환

 

let apple = "1.5" 
let result = parseFloat(apple) 

let apple1 = "1.5" 
let result1 = parseInt(apple1) 

console.log(result, result1) 
//결과 1.5, 1(정수이기에, 소수점을 포함하지 않는다.)

 

parseFloat() 를 이용하여, 문자를 실수(real number)로 바꾼다.

parseInt() 를 이용하여, 문자를 정수(integer)로 바꾼다.


undefined와 null

undefined와 null은 언뜻보기에 똑같아 보인다. 둘 다, 정의되지 않음을 뜻하기 때문이다.

undefined 타입의 값은 undefined가 유일하다.

null 타입의 값은 null이 유일하다.

자바스크립트 내에서 undefined는 '아무 값도 할당받지 않은 상태'를 의미한다.

그와 달리, null은 '비어있는 값'을 의미한다.

위의 두 정의 사이의 차이점에 대해 고민해보았다.

내가 내린 차이점은 상태와 값의 차이라는 것이다.

undefined는 null과 비교하였을 때에, 실재하는 값이 존재하지 않는다.

그러나, null은 "비어있는 값"이라는 값이 존재한다.

그래서 null은 typeof()를 돌려보았을 때, object타입을 가지고 있는 것 같다.

 

따라서, 의도적으로 비어있는 값을 명시하고 싶을 때에는 null을 사용하자.

'Javascript' 카테고리의 다른 글