[TIL] more about JS

Soo·2022년 11월 19일
0

JavaScript의 자료형과 JavaScript만의 특성은 무엇일까 ?

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

    (1) Dynamically typed Language (동적 타입 언어)

  • 런타임에 비로소 타입이 결정되는 언어
  • 소스가 compile, build될때 자료형을 결정하는 것이 아니라 실행할 때 결정됨
  • 언어 자체에서 타입을 추론해서 형을 변환해줌
  • 대표적인 동적 언어로는 JavaScript, Ruby, Python 등
  • 변수를 생성할 때 마다 매번 타입을 써줄 필요가 없기 때문에 기본적으로는 편하고 빠르게 코드 작성하기 좋음
let foo = 42 // foo가 숫자
foo = 'bar' // foo가 이제 문자열
foo = true // foo가 이제 불리언

2 . JavaScript 형변환

  • JS는 컴파일 과정 없이 실행과 동시에 해석을 하는 인터프리터 언어이다. 그런 원리에서 코드가 실행되는 과정에서 상황에 따라 값의 타입이 유연하게 바뀔 수 있는 것이다.
  • 다른 엄격한 언어에 비해 JavaScript의 형 변환이 개발하는 데 있어서 편리함과 자유로움을 느끼게 해주기도 한다.

(1) 명시적 형변환 - 명시적으로, 즉 의도적으로 형변환을 하겠다는 의미

  • 명시적 형 변환은 주로 string(), number(), boolean() 타입으로 이루어진다.

(2) 암시적 형변화 - 어떤 값과 값이 연산되어질 때 필요한 상황에 따라 형 변환이 일어남

(1). ==, ===

  • == : A와 B의 값만 같은 경우, true
  • === : 값과 값의 종류(data type)이 같은지 비교해서 같은 경우, true ⇒ more strict

느슨한 타입(loosely typed)의 동적(dynamic) 언어의 문제점은 무엇이고 보완할 수 있는 방법에는 무엇이 있을지 생각해보세요.

  • 변수를 생성할 때 마다 매번 타입을 써줄 필요가 없기 때문에 기본적으로는 편하고 빠르게 코드를 작성하기 좋지만 실행 도중 변수에 예상치 못한 타입이 들어와 Type Error가 발생하는 경우가 생길 수 있다. → 정적 언어와 달리 실행되는 시점에서 오류를 출력하게 됨 → ⚠️ 프로젝트의 크기가 크거나 협업을 하는 과정에서 변수의 타입이 일치하지 않는 경우가 생길 수 있으므로 주의해야함!! ⚠️
  • 보완할 수 있는 방법 : TypeScript를 사용할 수 있음 (*TypeScript: JS에서 코드를 입력할 때 타입을 미리 부여하는 기능을 추가한 정적 타입 언어)

undefined와 null의 미세한 차이들을 비교해보세요.

  • undefined : ’값이 할당되지 않은 상태’를 의미
let age;
alert(age); // 'undefined'가 출력됩니다.
  • null : ‘nothing’(존재하지 않는 값), ‘empty’(비어있는 값), ‘unknown’(알 수 없는 값)
let age = null;
//age를 알수 없거나 그 값이 비어있음을 의미
profile
Soogineer's Devlog

0개의 댓글