Variable type(변수 타입)

준성·2022년 7월 13일
0
post-thumbnail

variable type


스크립트 언어중 변수를 작성했을때 타입이 저장되는데 나뉘어지는데 크게 2가지가 있다.

1. Primitive types(원시 값)

직접적으로 값을 가지고 있는 타입이며 변경이 가능하다.

  • number
  • string
  • boolean
  • null
  • undefied

2. Object types(참조 값)

간접적으로 데이터를 가지고 있는 타입 변경이 불가능하다.

  • object
  • function
  • arrow

primitive type

1.Number type

C언어 , java 와는 다르게 따로 선언을 하지 않는다

const count = 10; // count는 10이다. (정수)
const size = 10.25; // size는 10.25다. (소수점)

정수 , 소수점도 const으로 변수를 작성해도 type은 자동적으로 Number 값이 창출된다.

2.String type

const junseong = 'junseong'; // ''안에 단어를 string type으로 간주
const hijun = 'Hello' + junseong; // ''안에 단어와 위에 선언한 junseong의 변수를 합친 값이 나옴
const HiJun = `hi ${junseong}!`; //template string 또는 template literals 라고 불린다.

console.log(`value:${HiJun}, type:${typeof HiJun}`); // template string을 사용
console.log('value:' + ${HiJun} + 'type:' + ${typeof HiJun}); // template string을 사용 X

template string 이란 템플릿 문자열이라 하며 '' 대신하여 backtick이란 ` 부호를 사용한다. 위에 코드를 보면 템플릿 문자열을 사용하면 그 안에 들어있는 문자열 혹은 스페이싱이 그대로 출력되어 간결하고 가독성이 좋다.

3.Bollen type

참 과 거짓으로 나뉘어진다.

const ture = ture;
const false = 3 < 1; // 1은 3보다 크지 않기 때문에 거짓 false

4.null type , undefined

텅 비어있어 값이 없는 상태 null
선언은 되었지만 아무것도 정해지지 않는 상태인 undefined
결은 비슷하지만 다른 유형이다.

let noting = null;

let x; // let x = undefined; 라고도 작성이 가능하다.

5.Symbol

Map이나 다른 자료구조에서 고유의 식별자가 필요하거나 동시 다발적으로 일어나는 곳에서 우선순위를 정하기 위해서 필요한 타입이다.

const symbol1 = Symbol('id');
const symbol2 = Symbol('id');
console.log(symbol1 === symbol2); // symbol1 과 symbol2가 같은지 확인해보는 방법
// 거짓인 이유는 동일한 스트링을 사용했어도 각자 고유한 심볼로 만들어지기 때문에 거짓으로 나온다
// 동일한 symbol을 만드려면
const Asymbol1 = Symbol.for('id');
const Asymbol2 = Symbol.for('id'); //주어진 스트링에 맞는 심볼을 만들어줘라
console.log(Asymbol1 === Asymbol2); // ture
console.log(`value: ${symbol1.description} , type: ${typeof symbol1}`); 
//심볼은 이렇게출력하면 오류가 나기 때문에 밸류에 .description을 사용하여 스트링으로 변환하고 출력해야함

Object type

1.Object type

const alex = {name : 'alex' , age: '18'};

alex.age = 21; 
alex.name = 'sonny'; //이런식으로 속성값이 변경이 가능하다.

위와 같이 alex라는 변수는 고정으로 지정하여 변경이 불가능 하지만 변수 안 name,age의 요소를 바꿀 수 있다.


Danymic typing

자바스크립트는 선언할 때 어떤타입인지 선언하지않고 프로그림이 동작할때 할당된 값에 따라서 변경될수 있다.
dynamically typed language 라 부른다.
그 이외 따로 타입을 지정해야하는 java , c언어stacically typed language 라 부른다.

다이나믹 타이핑의 예를 들면

let text = 'hello' // text 라는 변수는 hello 다
console.log(text.charAt(0)); 
//text라는 변수 문자열중 첫번째 인덱스 를 표시한다. 그러므로 text = hello 첫번째 알파벳 H가 나온다
console.log(`value: ${text}, type: ${typeof text}`);
// hellow 라는 값이고 타입은 스트링이다.
text = 1; //근데 여기서 text는 1이다.
console.log(`value: ${text}, type: ${typeof text}`); 
// 순차적이기 때문에 위 선언대로 text라는 변수는 1로 변했기 때문에 값은 1이고 타입은 넘버가 된다
text = '7' + 5; //근데 여기서 text는 '7'이라는 스트링과 숫자인 5 가 더해진다
console.log(`value: ${text}, type: ${typeof text}`); 
// 7이라는 스트링과 5라는 넘버가 붙어져 75라는 값이 나오지만 타입은 넘버가 아닌 스트링으로 변환된다
text = '8' / '2' 
// 근데 여기서 text는 스트링인 8 과 2로 나눈다 하지만 넘버가 아닌 문자는 나눌수가없다
console.log(`value: ${text}, type: ${typeof text}`); 
// 하지만 자바스크립트는 자동으로 변환되기 때문에 스트링이아닌 넘버로 인식되어 나눠진다
console.log(text.charAt(0)); 
// 위에선 값이 나오지만 아래에서 나오지않는 이유는 위에 text라는 변수가 바뀌었기 떄문에 
// 스트링이 더이상 아니여서 오류가 난다. 그렇기에 타입스크립트를 사용하는 이유가 된다.

마치며

스크립트 언어의 다양한 타입이 있다는 걸 알았고 마구잡이로 사용하는게 아닌 적재적소 판단을 하여 사용해야 좋은 코더가 될 수 있다는 생각을 한다. 아직은 많이 부족하겠지만 앞으로 더욱 증진하는 마음으로 글을 마무리 해본다.

profile
코드를 그리다.

0개의 댓글