[Javascript] - 기초 02. Variable


JS에서는 ES6이후로 변수 선언이 let 으로 정해졌다.

그전에는 var를 사용했지만 지금은 사용을 안해야 한다. 그 이유를 알아보자.

1. hoisting


hoisting이란 위로 끌어올리다. 즉 변수 선언부를 아래에서 최상위로 올린다는 의미이다.

a = 4;
var a;

var에서는 위의 문법이 문제가 없이 동작한다.

2. scope


var에는 let에 있는 block scope이 없다.

{
  age = 4;
  var age;
}
console.log(age);

이렇게 해도 정상적으로 동작한다.

이제 ES6의 변수들에 대해서 알아보자.

let


var를 대체한 일반적인 변수 선언이다. Mutable 타입이며 Block Scope을 활용해 선언하고 할당 할 수 있다.

JS의 특징은 Dynamic 타입이라서 변수 타입을 변경해가며 사용이 가능하다.

그래서 생기는 문제를 해결하고자 TypeScript가 나왔다.

const


상수 선언이다. 값을 변경 할 수 없다. (immutable)

다음과 같은 이유로 const 변수를 추천한다. (쓸 수 있다면)

  • 보안
  • Thread safety
  • 실수 방지

Variable Type


변수 타입에는 크게 3가지가 있다. 하나씩 알아보자.

1-1. number

숫자를 담는 타입으로 const나 let을 사용해 담으면 js가 알아서 number타입으로 지정해준다.

const data = 1;
console.log(`value: ${data}, type: ${typeof data}`);

//value: 1, type: number

1-2. string

const data = "c";
console.log(`value: ${data}, type: ${typeof data}`);

//value: c, type: string

+연산을 통해 합칠 수 있다.

1-3. boolean

  • false: 0, null, undefined, NaN
  • true : any other value
const data = 1 < 3;
console.log(`value: ${data}, type: ${typeof data}`);

//value: true, type: boolean

1-4. null, undefined

let nothing = null; // null, 아무 값도 없는 상태
let x; //undefined, 현재 알 수 없는 상태

1-5. symbol

const symbol1 = Symbol("id");
const symbol2 = Symbol("id");
console.log(symbol1 === symbol2); //false , 같은 string을 넣어도 고유값을 준다.

const gSymbol1 = Symbol.for("id");
const gSymbol2 = Symbol.for("id");
console.log(gSymbol1 === gSymbol2); //true

JS 에서는 first-class function으로 function을 변수에 할당할 수 있다.