JS/드림코딩앨리

3. 데이터타입 ,let vs var, hoisting

배워도끝이없네 2021. 4. 21. 10:06
'use strict'


// 2. variable
// let (ES6에서 추가되었다.)

let globalName = 'global name';

{
    let name = 'ellie';
    console.log(name);
    name ="dellie";
    console.log(name);
}
console.log(name);
console.log(globalName);

{ } 안에 있는 변수들은 block 변수

block 변수들은 block 밖에서 참조할 수 없음.

block 밖에 있는 변수들은 global 변수라고 하며 항상 메모리에 저장되어있기때문에 자제하는것이 좋음

var를 쓰면 안되는 이유.

- Hoisting때문에 (Hoisting이란 어디에 변수를 선언했던간에 가장 상단에서 선언한것으로 되는것)

- 이때문에 변수를 선언하지 않고도 변수를 참조시키는것이 됨.

- 또한 var는 block scope를 무시하기때문에 블럭안에있는 변수도 블럭 밖에서 찍어볼 수 있음;

Constans

- 선언하고 난 다음에는 값이 절대로 바뀌지 않는 변수

- immutable data type 이라고 한다

Constans 를 써야하는 이유

- 보안 (외부에서 변경할 수 없음)

- thread safety (다양한 쓰레드들이 동시에 값을 변경하지 못하도록 함)

- human mistake를 방지

Variable type

1. primitive type =>더이상 나눠질 수 없는 single item : number ,String ,boolean, null, undefined, symbol

2. object type=> single item을 한개로 묶어서 관리할 수 있게해주는것

box container , function, first-class function(function을 변수에 담을수 있는것);

숫자끝에 n을 붙이면 bigint 로 취급한다(크롬/사파리만 취급)

Boolean

-false : 0, null, undefined, NaN, ''

-true : 다른 모든 값들

Symbol

-고유한 식별자가 필요할때 사용

-동일한 symbol로 작성했어도 서로 다르다고 인식한다.

-symbol은 바로 출력하면 에러가 나기때문에 symbol.description으로 string으로 바꿔서 출력한다.

Dynamic type

- 자료형을 구분짓지 않고 할당해서 나중에 자료형이 변화하는 타입.

TypeScript

- JS위에 Type을 올려준 단어 (자스는 런타임에서 실시간으로 바뀌는변수라서..)