Javascript 숫자, 문자열 타입, 동적타이핑

2021. 6. 4. 01:19카테고리 없음

1. 숫자타입 특징

자바스크립트는 C나 Java처럼 int, long 같은 숫자타입을 제공하지 않음. 모든 수를 실수로 처리하고, 정수만 표현하는 별도의 타입도 존재하지 않는다. 

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

자바스크립트에서는 0으로 나누는것도 표현할 수 있는데, 이때 Infinity라는 값으로 나타낸다. 

console.log(10 / 0);    // Infinity
console.log(10 / -0);    // -Infinity
console.log(1 * 'String');    // NaN

대소문자를 구별하기 때문에 반드시 NaN 그대로 써야함. 

not-a-number의 뜻을 가진다. 

 

2. 문자타입 특징 

문자열은 "", '', `` 이렇게 세가지로 나타낼 수 있는데, 자바스크립트에서 가장 일반적인 표기법은 작은따옴표!

백틱 표기법은 ES6부터 새로 도입된 문자열 표기법인데, 백틱(`)으로 템플릿 리터럴을 사용하면, 줄바꿈 등을 쉽게 표현할 수 있다. 

아무리 긴 문장이더라도 백틱으로 줄바꿈 처리하니까 가독성이 좋아졌다.

백틱은 표현식 삽입할때 가장 많이 쓰는것같다

console.log(`1 + 2 = ${1 + 2}`);    // 1 + 2 = 3

 위의 코드에서 백틱대신에 싱글쿼테이션을 써버리면 템플릿 리터럴이 아니고 문자열로 취급한다. 

 

3. 동적타이핑

C나 Java같은 정적타입의 언어는 변수의 타입을 변경할 수 없고, 컴파일 시점에 타입체크를 수행해서 통과하지 못하면 에러를 뱉어낸다. 데이터타입에 맞지 않는값을 할당하면 실행을 막고, 오류가 나는것. 데이터 타입이 일관성을 가지니까 좀더 안정적인 코드 구현이 가능해지긴 한다.  

 

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

var, let, const키워드를 통해 변수만 선언하지 별도의 데이터타입을 갖지는 않는데 특정 값을 넣고 그 값이 어떤 타입을 가지는지 추론은 가능하다. typeof 연산자로 변수를 연산하면 변수의 데이터타입이 무엇인지 반환시켜준다. 

var foo;
console.log(typeof foo);    // undefined

foo = 3;
console.log(typeof foo);    // number

foo = {};
console.lof(typeof foo);    // object

정적타입 언어는 변수 선언과 동시에 데이터타입도 결정나고, 변경이 불가한데 자바스크립트에서는 값을 할당하는 시점에 변수 타입이 동적으로 결정되고, 변수의 타입을 언제든지 변경가능.

 

대표적인 동적타입 언어: javascript, python, php, ruby

동적타입 언어는 유연성은 높지만, 신뢰성은 떨어진다는 단점이 존재한다. 타입이 멋대로 결정되므로 실행이되지 않으면 오류를 발견하기 어렵다.