JavaScript 기초 문법(3)

경용·2022년 6월 28일
0

JavaScript

목록 보기
3/4
post-thumbnail

형 변환

  • 자바스크립트는 느슨한 타입 언어, 동적 타입 언어로 변수의 자료형을 명시적으로 선언할 필요가 없는 언어
  • 연산자로 인한 계산이나 변수에 전달되는 값은 자동으로 암묵적 형 변환 수행
  • 강제적 형 변환을 위해서는 자료형 함수를 이용해 명시적 형 변환 수행

느슨한 타입(loose typing)언어? 동적(dynamic)언어?

느슨한 타입: 타입 없이 변수를 선언하는 것이다. 자바스크립트는 내부적으로 타입이 관리되기 때문에 선언 시 타입 없이 선언할 수 있다. 반대로 자바에서는 강력한타입(strong typing)을 사용하는데, 선언시에 int인지 String인지 등 타입을 함께 선언해야 줘야 한다.

동적언어: 변수의 타입이 실행하면서 바뀌는 것을 허용하는 언어이다. JavaScript, Ruby, Python등의 언어가 있고, 타입 없이 변수만 선언하여 값을 지정할 수 있다.
• 장점 : 런타임까지 타입에 대한 결정을 끌고 갈 수 있기 때문에 많은 선택지가 있다.
• 단점 : 실행 도중에 변수에 예상치 못한 타입이 들어와 Type Error가 생길 수 있다.

정적언어: 자료형을 컴파일 시에 결정하는 언어이다. C, C#, C++, Java 등의 언어가 있고, 변수에 들어갈 값의 형태에 따라 자료형을 지정해주어야 한다. 컴파일 시에 자료형에 맞지 않은 값이 들어있으면 컴파일 에러가 발생한다.
• 장점 : 컴파일 시에 타입에 대한 정보를 결정하기 때문에 실행 속도가 빠르고, 타입 에러로 인한 문제점을 초기에 발견할 수 있어 타입의 안정성이 높다.
• 단점 : 코드 작성시 매번 변수형을 결정해줘야 하는 번거로움이 있다.

TypeScript : 동적 언어인 JavaScript는 실행 도중 발생하는 Type Error는 런타임 시 확인할 수 밖에 없기 때문에, 코드가 길고 복잡해질 경우 찾기가 어려워진다. 이러한 불편함을 해소하기 위해 나온게 TypeScript이다. 타입스크립트는 자바스크립트에 타입을 부여한 언어로, 자바스크립트의 확장된 언어라고 볼 수 있다. 타입스크립트의 가장 큰 장점 중 하나는 정적 타입을 지원한다는 것이다. 이는 컴파일 단계에서 오류를 발견할 수 있게 해주고, 코드의 가독성을 높이고 예측할 수 있게 도와준다.

암시적 형 변환? 명시적 형 변환?

암시적 형 변환: 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 자동으로 타입이 변환 되는 것이다.

명시적 형 변환: 개발자가 의도를 가지고 Object(), Number(), String(), Boolean()등을 이용하여 변환한 것이다.

명시적 형 변환 예제

(String)

console.log(String(123)); //output: 123
console.log(String(1 / 0)); //output: Infinity
console.log(String(-1 / 0)); //output: -Infinity
console.log(String(NaN)); //output: NaN
console.log(String(true)); //output: true
console.log(String(null)); //output: null

(Number)

console.log(Number("")); //output: 0
console.log(Number("123")); //output: 123
console.log(Number("123hello")); //output: NaN
console.log(Number(true)); //output: 1
console.log(Number(false)); //output: 0
console.log(Number(null)); //output: 0
console.log(Number(undefined)); //output: NaN

(Boolean)

console.log(Boolean("")); //output: false
console.log(Boolean("123")); //output: true
console.log(Boolean("hello")); //output: true
console.log(Boolean("0")); //output: true
console.log(Boolean(0)); //output: false
console.log(Boolean(123)); //output: true
console.log(Boolean(NaN)); //output: false
console.log(Boolean(null)); //output: false
console.log(Boolean(undefined)); //output: false
profile
문제를 객관적으로. 그 후 true / false

0개의 댓글