본문 바로가기
웹 개발/javascript

javascript 변수와 타입

by 스토리라이언 2021. 3. 2.

작성일: 2021.3.2

1. 변수(variable)

하나의 값을 저장하기 위해 확보한 메모리 공간 또는 메모리 공간을 식별하기 위해 붙인 이름

다시 말해 값의 위치를 가리키는 이름, 상황에 따라 변할 수 있는 값이다. 

 

변수의 선언(declaration):

키워드 let, const. var를 쓴 후 변수명을 적고 세미콜론을 붙인다. 

 

변수의 할당(assignment):

let num; //변수의 선언
num = 1; //변수의 할당, 	변수 num에 1를 할당한다

let num = 2; //변수의 선언과 할당을 한번에 할 수 있다. 

 

2. 타입(Type)

자바스크립트에는 7개의 데이터 타입을 제공한다. 

  • number: 숫자, 정수, 실수 구분없이 하나의 숫자 타입만 존재
  • string: 문자열,  작은따옴표(' ') 혹은 큰 따옴표(" ")로 표시
  • boolean: 참(true), 거짓(false)
  • undefined: 값이 정해지지 않은 값
  • null: 값이 없다는 것을 의도적으로 명시할 때 사용
  • symbol: ES6에서 추가된 타입
  • 객체타입: 객체, 함수, 배열 등

123과 '123'은 다른 타입이다. 

여러 가지가 묶인 객체 타입도 있다. 예를 들면 

let person = { 
 name: 'Steve';
 age; 32;
 isStudent: true;
};

typeof 연산자를 통해 변수의 타입을 조사해 보자

typeof 1; //number
typeof foo; //undefined
typeof false; //boolean
typeof 'Hello';// string
typeof {}; //object
typeof []; //object
typeof null; //object
typeof function(){}; // "function"

 

타입변환

타입변환에는 명시적 타입변환, 암묵적 타입변환이 있다. 

암묵적인 것은 number+string인 경우 string으로 자동변환되는 것을 말한다.

let score = 10 + '20';
console.log(score); //1020

그렇다면 위와 같은 경우 score에 30의 값이 할당되게 하려면 어떻게 하면 되는가? 이때 필요한 것인 명시적 타입변환이다. 

 

숫자 타입으로 타입변환

Number() 함수: mdn 문서를 찾아보니 Number()를 사용하면 문자열 '20'이 숫자로 변환된다. 

let score = 10 + Number('20');
console.log(score); //30

 

console.log(Number('30')); //30 (string인 경우)
console.log(Number(true)); //1 (boolean인 경우)
console.log(Number(50)); //50 (number인 경우)

parseInt(): 정수타입으로 변환

parseFloat(): 실수타입으로 변환

parseInt('-1.03'); //-1
parseFloat('118.99'); //118.99

+연산자, * 연산자

+ '2'; //2
+'-1'; // -1
'2' * 1; //2
'2' * 2; //4

 

문자열 타입으로 타입변환

그렇다면 반대로 number를 string으로 변환하려면 어떻게 해야 할까?

String() 함수는 숫자, 불리언 타입을 문자열로 변환한다. 

String(123); //"123"
String(true); // "true"

Object.prototype.toString 메소드를 사용하여 문자열로 변환한다.

(1).toString(); //"1"
(true).toString(); //"true"
(false).toString(); //"false"

문자열 연결 연산자(+)를 이용하여 문자열로 변환한다. 

1+''; //"1"
'123'+1; //"1231"
true+''; //"true"
false+''; //"false"

댓글