[Javascript] - 기초 02. Variable
in Web on Javascript
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을 변수에 할당할 수 있다.