JavaScript의 자료형과 JavaScript만의 특성

Jason Moon·2022년 5월 16일
0
post-thumbnail

동적 타입

JavaScript는 느슨한 타입(loosely typed)의 동적(dynamic) 언어이다. JavaScript의 변수는 어떤 특정과 연결되지 않으며, 모든 타입의 값으로 할당 (및 재할당) 가능하다.

let foo = 42 // foo가 숫자
foo = 'bar' // foo가 이제 문자열
foo = true // foo가 이제 불리언

이처럼 자료의 타입은 있지만 변수에 저장되는 값의 타입은 언제든지 바꿀 수 있는 언어를 ‘동적 타입(dynamically typed)’ 언어라고 부른다.

형 변환

함수와 연산자에 전달되는 값은 대부분 적절한 자료형(타입)으로 자동 변환된다. 이런 과정을 '형 변환(type conversion)'이라고 한다.

문자, 숫자, 논리형으로의 형 변환은 자주 일어나는 형 변환이다.

문자형으로 변환은 무언가를 출력할 때 주로 일어난다.
String(value)을 사용하면 문자형으로 명시적 변환이 가능하다. 원시 자료형을 문자형으로 변환할 땐, 대부분 그 결과를 예상할 수 있을 정도로 명시적인 방식으로 일어난다.

숫자형으로 변환은 수학 관련 연산시 주로 일어난다.
Number(value)로도 형 변환을 할 수 있다.
숫자형으로의 변환은 다음 규칙을 따른다.

전달받은 값형 변환 후
undefindedNaN
null0
true / false1 / 0
String전달받은 문자열을 '그대로'읽되, 처음과 끝의 공백을 무시한다, 그리고 숫자형으로 반환함. 문자열이 비어있다면 0이 되고, 오류 발생 시 NaN(예 '123a')가 된다.

불린형으로 변환은 논리 연산 시 발생
Boolean(value)으로도 변환할 수 있다.

0, null, undefinde, NaN, "" => false
그 외의 값 => true

** 주의 사항

  • 숫자형으로 변환시 undefinded는 0이 아니라 NaN가 된다. null은 0
  • 문자열 "0"과 " "같은 공백은 불린형으로 변환 시 true가 된다.

동등 연산자(==)와 일치 연산자(===)

동등 연산자는 형이 다른 피연산자를 비교할 때 피연산자를 숫자형으로 바꾸는데 여기에서 문제가 발생한다.
아래의 코드를 보면 동등 연산자는 형이 다른 두 값을 true로 반환한다.

alert( 0 == false ); // true

alert( '' == false ); // true

일치 연산자(strict equality operator) ===를 사용하면 형 변환 없이 값을 비교할 수 있다.
일치 연산자는 엄격한 동등 연산자이다. 자료형의 동등 여부까지 검사하기 때문에 피연산자 a와 b의 형이 다를 경우 a === b 는 즉시 false를 반환한다.

alert( 0 === false ); // false, 피연산자의 형이 다르기 때문

일치 연산자 ===가 동등 연산자 ==의 엄격한 버전인 것처럼 ‘불일치’ 연산자 !==는 부등 연산자 !=의 엄격한 버전이다.

null이나 undefined와 비교하기

일치 연산자 ===를 사용하여 null과 undefined를 비교
두 값의 자료형이 다르기 때문에 일치 비교 시 거짓이 반환

alert( null === undefined ); // false

동등 연산자 ==를 사용하여 null과 undefined를 비교
동등 연산자를 사용해 null과 undefined를 비교하면 특별한 규칙이 적용돼 true가 반환된다. 동등 연산자는 null과 undefined를 '각별한 커플’처럼 취급한다. 두 값은 자기들끼리는 잘 어울리지만 다른 값들과는 잘 어울리지 못한다.

alert( null == undefined ); // true

동등 연산자 ==는 피연산자가 undefined나 null일 때 형 변환을 하지 않습니다. undefined와 null을 비교하는 경우에만 true를 반환하고, 그 이외의 경우(null이나 undefined를 다른 값과 비교할 때)는 무조건 false를 반환

📕참고

profile
어려워 보여도 시간을 들여서 해보면 누구나 할 수 있는 일이다

0개의 댓글

관련 채용 정보