[자바스크립트] JS는 동적타입 언어

박지원·2023년 3월 16일

1차 스터디

목록 보기
3/13

▷ 동적 타입

자바스크립트는 변수에 타입을 미리 지정하지 않는다. 변수에 할당되는 값에 의해 타입이 바뀐다는 뜻이다. 이를 동적 타입이라고 한다.

자바스크립트는 동적 타입 언어다.

자바스크립트에서 타입은 변수에 할당된 값에 의해 결정(추론) 되기 때문에, 값에 의한 타입 예측에 따른 오류를 줄이기 위해서는 다음과 같은 습관을 들이면 좋을 거 같다.

  1. 재할당 및 전역변수 사용 자제
  2. 변수 스코프 최대한 좁게
  3. const 사용

▷ 원시타입 종류 몇가지

1. 숫자 타입

console.log(1 == 1.0) // true

자바스크립트 숫자 타입에서의 수는 모두 실수이다. 소수랑 정수를 별도의 타입으로 나누지 않았기 때문이다. 정수도 실수 안에 있으니까 위의 조건문도 참이다.


2. null / undefined

null은 값이 없음을 표시
undefined는 값을 모름을 표시

null은 변수에 값이 없다는 것을 의도적으로나타내고자 할 때 사용한다.

반면 undefinednull처럼 우리가 할당하기 위한 값이 아닌, 자바스크립트 엔진이 초기화 되지 않은 변수를 나타내는 상태를 의미하는 값이다. undefined값을 변수에 일부러 할당할 수는 있지만 본래 취지에 어긋난다고 쓰지 말란다.

갑자기 null을 사용할 때마다 헷갈렸던 부분이 생각난다. Null 인지 NULL 인지 None 인지 헷갈렸었는데 자바스크립트에서는 모두 소문자로 적어 주어야 한다. 참고로 NULL은 C, None은 파이썬이다. Null은 잘 모르겠다.

자바스크립트는 대소문자를 구별하기 때문에 철자를 조심해야한다.


3. 심벌

ES6에서 새롭게 추가된 7번째 타입이라고 한다.

  1. 다른 값과 중복되지 않는 유일한 값
  2. 다른 타입들과 달리 함수 호출로 생성
#1

let key = Symbol('k');
console.log(key);        // Symbol(k)

let ob = {};

ob.key = 'value';
console.log(ob.key);     // value
#2

let key = Symbol('k')
let key2 = Symbol('k')

console.log(key === key2) // false

같은 값을 받지만 실제로 가리키는 값은 다른 것 같다. 이부분은 더 공부해 볼 필요가 있어서 나중에 다시 따로 적을 예정이다.

profile
NodeJS 백엔드

0개의 댓글