본문 바로가기
웹 스터디/JavaScript

[JavaScript] 데이터 타입, let vs var, hoisting (With. Ellie)

by 로토마 2021. 7. 23.

Variable)

-> 변경될 수 있는 값

 

1) let (added in ES6)

-> mutable 값으로 수시로 변경할 수 있는 변수이다.

let globalName = 'global name';

{

    let name = 'rotoma';

    console.log(name);

    name = 'hello';

    console.log(name);

    console.log(globalName);

}

console.log(name);

console.log(globalName);

 

이렇게 사용하면 된다.

glober은 전역변수를 뜻하고 

glober이 붙지 않은 let은 지역변수이기 때문에

박스 밖에서는 무시된다.

 

- let vs var

var는 되도록 쓰지마!!!

왜냐??!! var hoisting이 일어난다.

 

hoisting이란?

변수를 어디에 선언하던, 맨 위로 선언을 끌어올리는 것이다!

그렇게 때문에 변수를 먼저 선언하지 않고 값을 할당해도 오류가 발생하지 않는다.

또!! var는 block scope이 없다!

즉 -> block을 무시한다.... 그렇기 때문에 프로그램을 개발하는 것에 있어 혼란을 야기할 수 있다...

되도록 var...는 쓰지말고, let!!을 쓰자!

 

+) 아! 그리고 변수를 지정할 때에는 브라우저와의 호환성도 생각하자!!

 

2) constant

이 변수는 let 과는 달리 가리키고 있는 포인터가 잠겨있어서 값을 변경할 수 없는 변수이다.

즉, immutable type의 변수이다. 

 

- 하지만 이러면 불편하지 않나요...??? 왜 사용하는거죠?? 

-> 왜냐하면, 보안성에도 좋고!! 협업할 때 실수를 줄여주고!! thread에서의 안정성에 좋다!

 

const daysInWeek = 7;

const maxNumber = 5;

이런식으로 사용하면 된다!

 

3) 변수의 타입

일일이 다른 형식을 사용할 필요 없이 number이라는 type으로 분류된다.

 

- integer 정수

const count = 17

 

- decimal number 소수점 수

const size = 17.1;

 

- specla numeric values: infinity, infinity, NaN

const infinity = 1/0;

const negativeInfinity = -1/0;

const nAn = 'not a number'/2;

 

- string 문자열

const char = 'c';

const rotoma = 'rotoma';

 

- boolean 참/거짓

const canRead = true;

const test = 3 < 1 ;  // false

 

- null 공백값

let nothing = null;

 

- undefined 지정되지 않은 값

let x;

console.log(`value: ${x}, type: ${typeof x}`);

 

4) symbol

각 변수에 id, 고유한 식별자를 지정한다.

 

const symbol1 = Symbol('id');

const symbol2 = Symbol('id');

console.log(symbol1 === symbol2);

const gSymbol1 = Symbol.for('id');

const gSymbol2 = Symbol.for('id');

console.log(gSymbol1===gSymbol2); //true

console.log(`value: ${symbol1.description}, type: ${typeof symbol1}`);

 

5) Dynamic typing: dynamically typed language

-> 선언할 떄 어떤 타입인지 정의 해주지 않아도 run-time시 지정되어 있는 값을 기준으로 정해진다.

 

오늘의 노트!! )