본 내용은 해당 강의 토대로 작성
variable
- 변수: 변경될 수 있는 값
let
- ES6에서 추가된 변수 선언 키워드
- Mutable
- var
- 그 이전에 사용하였던 변수 선언 키워드
- 사용하지 말 것
- 선언 전에 값을 할당한다거나, 출력할 수 있어 예상치 못한 오류 발생의 원인이 되기 쉬움(var hoisting)
- Block scope가 없음
let name = 'jaemin';
console.log(name); // jaemin 출력
name = 'siru';
console.log(name); // siru 출력
- 메모리: 애플리케이션마다 사용할 수 있는 메모리가 할당되어 있음
- let을 사용해서 변수를 정의하게 되면 메모리 한 부분을 가르킬 수 있는 포인터가 생김
- 추후, 다른 값을 넣게 되면 다른 값을 저장할 수 있게 된다.
Block scope
- 블럭안의 코드는 블럭 밖에서 접근 할 수 없다.
- 글로벌 변수는 블럭 안, 밖 어디서는 접근이 가능하다.
- 애플리케이션이 시작되어 끝날 때까지 메모리에 탑재되어 있다.
- 최소한으로 사용하는 것이 좋다.
let globalName = 'global name'; // 글로벌 변수
{
let name = 'jaemin';
console.log(name);
name = 'siru';
console.log(name);
}
Hoisting
- 변수, 함수가 어디에서 선언이 되었느냐에 상관 없이 제일 위로 끌어올리는 것
Constant
- 한번 가르킨 포인터가 잠겨있음
- 선언과 동시에 할당이 되면 값을 변경 불가
- Immutable
- 보안, thread safety, 실수를 줄이기 위해
Variable types
- JavaScript에서는 변수의 타입이 다이나믹하게 할당된다.
Primitive
- single item: 더 이상 작은 단위로 나눌 수 없는 것
- number, string, boolean, null, undefined, symbol
- number
- -2 ** 53 ~ 2**53
- bigInt: 숫자의 제일 마지막에 n을 붙임(Chrome, Firefox)
- Infinity = 1 / 0
- negativeInfinity = - 1 / 0
- NaN: not a number
- DOM요소를 다룰 때 valid한 값인지 고려해야 함
- string
- 다른 string과 +를 이용해서 붙일 수 있음
- template literals: 백틱(`)을 감싸서 변수를 함께 사용할 수 있음
const name = 'siru'; const helloSiru = `hi ${name}`;
- boolean
- 참과 거짓
- false: 0, null, undefined, NaN
- true: any other value
- 부등호의 참, 거짓
- null: 명확하게 비어있는 상태
- undefined: 선언은 되었지만, 값이 지정되어 있지 않은 것
- symbol
- 고유한 식별자
- 동시 다발적으로 일어날 코드에서 우선순위를 주고 싶을 때 사용
- 동일한 string으로 작성하여도 다른 값으로 취급
- for 메소드를 사용해서 같은 symbol을 만들 수 있음
- 출력시 description 메소드 사용
const symbol1 = Symbol('id');
const symbol2 = Symbol('id');
console.log(symbol1 === symbol2) // false
const gSymbol1 = Symbol.for('id');
const gSymbol2 = Symbol.for('id');
console.log(gSymbol1 === gSymbol2) // true
console.log(`value: ${symbol.description}`)
Object
- box container: single item을 한 단위로 묶어서 관리할 수 있는 것
const siru = { name: 'siru', age: 5};
siru.age = 6;
- 한 번 할당된 object는 다른 object 할당이 불가능하다.
- object 안의 변수의 값은 다른 값으로 할당할 수 있다.
Function
- frist-class function: 다른 데이터 타입처럼 변수에 할당, 함수의 파라미터로 전달, 함수의 return으로 사용 가능
Dynamic typing
- JavaScript는 선언시 데이터 타입을 명시할 필요가 없다.
- 런타임(프로그램 동작)에서, 할당된 값에 따라 타입이 변경
- 다수의 엔지니어, 규모가 있는 프로젝트에서 오류 발생의 원인이 될 수 있음
- Type Script로 보완
'programming study > JavaScript' 카테고리의 다른 글
[드림코딩 by 엘리] JavaScript 기초 강의(4) (ES5+) (0) | 2021.06.08 |
---|---|
[드림코딩 by 엘리] JavaScript 기초 강의(3) (ES5+) (0) | 2021.06.07 |
[드림코딩 by 엘리] JavaScript 기초 강의(1) (ES5+) (0) | 2021.06.04 |
JavaScript 노트 (02) (0) | 2021.02.27 |
[코드잇] jQuery 활용하기 (2) (2021.2.27) (0) | 2021.02.27 |