Links

데이터타입, data types, let vs var, hoisting

입력 연산 출력 -> CPU 최적화된 연산 + 메모리 사용 최소화가 중요하다.

​ 변수 (variable)

변경될 수 있는 값 , 빈데이터에 변수를 선언 하고 값을 할당함

let

  • 변수 변경될 수 있는 값을 선언할때 사용 (added in ES6)
  • 읽기와 쓰기가 다 가능하다.
  • MUTABLE 타입이다. (변경가능)

block scope {}

코드를 블록 스콥해주면 블록스콥 안에서만 작동하게 된다. ​
  • 반대는 {} 의 바깥 부분에서 선언된 globalname = 'gobal name'; 글로벌변수
  • 전역변수는 어느곳이던 접근이 가능하다.
  • 그리고 블록스콥 안에서도 인지하고 있음 그렇기떄문에 전역변수는 최소한으로 사용하는것이 좋고, 가능한 필요한곳에만 사용하는것이 좋다.

var 단점

var은 값을 선언하기도 전에 쓸 수 있는 치명적인 단점이 있다.
  • var은 블록스콥{} 을 철저히 무시함 -> 안에서 선언해도 출력이됨.
  • var hoisting -> 어디에 선언 했는지 상관없이 항상 제일 위로 끌어올려주는것을 의미한다.

constants( const )

  • IMMUTABLE 변경 불가능함 한번 할당하면 값이 절대로 바뀌지 않음
  • 보안상 상당히 좋음 , 변경될것이 없다면 const를 사용하는것이 좋음
  • 읽기만 가능하다 다시 다른값으로 쓰는것은 불가능 하다.

variable types​

  • primitive, single item: number, string, boolean, null, undefiedn, symbol
  • object, box container
  • function, frist-class function

다른언어와 자바스크립트의 차이점

  • c언어, java 에서는 숫자 변수 하나도 구체화 시켜서 데이터 관리를 할 수 있다.
  • short, int는 작은 단위의 데이타 long 은 큰 데이타를 관리할때)​
  • short, int long은 정수 / float, double은 소수점 단위를 사용할때 사용

bigInt

  • 숫자 끝에 n 만 붙여주면 bigInt로 간주되어짐
  • 크롬이랑 파이어폭스에서만 사용 가능함

string

null undefined 의 차이

//null
let notinign = null; // 내가 명확하게 빈값을 지정하는것
//undefined
let x = undefined; // 선언은 되었지만 값이 비어있는 상태

symbol

주어진 식별자와 상관없이 고유한 값을 만들때 사용한다.
// symbol
const symbol1 = symbol('id'); // 똑같이 쓰고 싶다면 symbol.for을 써주면된다.
const symbol2 = symbol('id');
console.log(symbol1 === symbol2);
console.log(`value: ${symbol1.description}`); // symbol은 바로 출력이 안됨 .description 을 꼭 붙여줘야함

Dynamic typing: dynamically typed language

let text ='hello';
console.log(`value: ${text}, type: ${tyoe0f text}`); // value: hello, type: string
text = 1;
console.log(`value: ${text}, type: ${tyoe0f text}`); // value:1, type: number
text = '7' + 5;
console.log(`value: ${text}, type: ${tyoe0f text}`); // value: 75, type: string
text = '8' + '2';
console.log(`value: ${text}, type: ${tyoe0f text}`); // value:4, type: number
이렇게 예측 못하는 상황이 많기때문에 -> 타입스크립트가 나옴

primitive, object ​​차이점

  • primitive는 value 값자체가 메모리에 저장된다.
  • object는 용량이 너무 커서 바로 저장 할 수 가없다.
  • const 로는 변경이 불가능하지만 const의 변수를 object화 하면 object속성이기때문에 변경이 가능하다.