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시 지정되어 있는 값을 기준으로 정해진다.
오늘의 노트!! )
'웹 스터디 > JavaScript' 카테고리의 다른 글
[JavaScript] 편리한 Object의 세계! (With. Ellie) (0) | 2021.07.27 |
---|---|
[JavaScript] Class vs Object, 객체지향 언어 클래스 정리 (With. Ellie) (0) | 2021.07.27 |
[JavaScript] Arrow Fuction이란? 함수의 선언과 표현 (With. Ellie) (0) | 2021.07.27 |
[JavaScript] 연산, 반복문 operator, if, for loop (With. Ellie) (0) | 2021.07.23 |
[JavaScript] 콘솔에 출력, script async / defer 차이점 (With. Ellie) (1) | 2021.07.21 |