JavaScript

[JavaScript] #1 변수형, 데이터타입, 호이스팅 (자바스크립트 let vs var, const, hoisting)

권락현 2021. 12. 30. 21:59

처음으로 적는 자바스크립트 정리입니다. 가장 먼저 다른 프로그래밍 언어와 차별화가 되는 변수형과 데이터 타입에 대해서 정리해보겠습니다!

 


1. let vs var

- let과 var은 모두 자바스크립트 변수 선언 방식이다.

- 원래는 var만 썻었음

- 이번에 ES6로 넘어오면서 추가된 것이 let

근데 이 var가 굉장히 위험한 놈이다....

 

 

*다른 프로그래밍 언어를 배우고 오면 이해가 안 되는 var에서만 되는 것*

  • 선언하기 전에 값을 할당하는 것이 가능하다
num = 1;
var num;
//아니 이게 에러가 아니라고???

 

이것을 var hoisting(호이스팅)이라고 한다

hoisting(끌어올리다)이란 어디에 선언했는지 상관없이 선언한 것을 모두 다 제일 위로 올려주는 것

=> 근데 let은 안됨, let은 무조건 선언 먼저! 그래서 더 안전함

 

 

  • var은 {}를 무시한다. 모두 다 전역 변수처럼 사용됨
{
	num = 1;
	var num;
}
console.log(num); //이게 출력이 되네...

=> let은 {} 안의 값은 {} 안에서만 사용 가능하다!

 

=> 이게 작은 규모의 코드에서는 괜찮을지 몰라도 규모가 커지면 var라는 변수는 어마어마한 장애를 일으킬 수 있다.

=> 그러니까 let만 사용하자!

 


2. const

- 한번 값이 할당되면 바꿀 수 없는 변수(상수로 만들어 버림)

- 다른 언어에서는 const int 이런 식으로 쓰는 데 자바스크립트는 const 자체가 변수형

- 값이 변경이 안되니 보안상에도 도움이 된다. => 바뀔 필요 없는 건 웬만하면 const로

 

const num = 1;
num = 2; //이거 안됨, 에러남

 


3. 자바스크립트의 데이터 타입

- 자바스크립트는 변수에 어떤 것이 들어가든 동적으로 결정해줌

(이거 사실 좀 위험함.... => 그래서 나온 게 타입스크립트 TypeScript)

let a = 1;
let b = 1.2;
let c = 'string';
//알아서 데이터타입 결정!
  • 숫자형 타입은 number 이거 하나! (int, double, long 등등 없음!)

 

  • 모든 문자형 타입은 String! 
  • String에서 사용 가능한 예시
const char = 'c'; //이것도 String
const str = 'string';

console.log(`value: ${str}, type: ${typeof str}`);
console.log('value:'+ str + 'type: ' + typeof str);
//위에 두개가 같은 거임

value: string, type: string // 이렇게 출력

- 문자열을 + 로 연결해서 출력할 수 있다.

- `넣고 싶은 문자열 예시 or ${변수명}` 이렇게 넣어서 출력할 수도 있다

 

*주의사항*

` 이거 작은따옴표 아님!!!! 1번 왼쪽 위, 탭키 바로 위에 있는 키이다.

 

 

 

  • symbol

- 변경 불가능하고, 다른 값과 중복되지 않는 고유한 값!

- 동일한 문자열이나 값을 사용해도 서로 다른 것으로 취급한다.

- Symbol 함수를 호출해서 선언한다.

- 그래서 같은 심볼로 사용하고 싶으면 Symbol.for()을 호출하여 선언하면 된다.

const symbol1 = Symbol('a');
const symbol2 = Symbol('a');
console.log(symbol1 === symbol2); //false

const symbol3 = Symbol.for('a');
const symbol4 = Symbol.for('a');
console.log(symbol3 === symbol4); //true

여기까지 자바스크립트의 데이터 타입과 변수형, 호이스팅 등에 대해서 다루어 보았습니다!