출처 : 유튜브 드림코딩 자바스크립트
Programming에서 가장 중요한 것 3가지?
입력, 연산, 출력
(추가로 CPU에 최적화된 연산을 하는 것, 메모리의 사용을 최소화하는 것 또한 중요)
ES6에서 추가된 언어이다. mutable datatype.
block scope 적용된다.
ex)
{let name = 'ellie'; //코드를 block내에 작성하게 되면 더이상 밖에서는 안의 내용 볼 수 없다.
console.log(name);
name = 'hello';
console.log(name);}
let globalName = 'global name'; //어느 곳에서나 접근 가능.
예전에 쓰던 변수. 이제는 쓰지 않음.
block scope이 적용되지 않는다.
hoisting이 가능하다.
값이 절대 바뀌지 않는 변수. Immutable data type
읽기만 가능하다. 다시 다른 값으로 쓰는 것 불가!
favor immutable data type always for a few reasons
장점)
Note)
어떤 숫자들의 형태든 변수 취급 가능.
const count = 17; // integer
const size = 17.1;// decimal number 소수점
special numeric values : infinity, -infinity, NaN
const infinity = 1/0; //infinity
const negativeInfinity = -1/0; //-infinity
const nAn = 'not a number'/2; //NaN
bigint 표현하기
const bigInt = 123456789n //bigint type
false : 0, null, undefined, NaN, ''
true : any other value
let nothing = null;
null이라고 명확하게 값 할당
let x;
값을 할당하지 않음
create unique indentifiers for objects
map이나 다른 자료구조에서 고유한 식별자가 필요하거나 동시다발적으로 일어날 수 있는 코드에서 우선순위를 주고 싶을 때.
const symbol1 = Symbol('id');
const symbol2 = Symbol('id');
위 둘은 동일한 값 아니다.
동일한 string으로 작성했어도 다른 symbol로 만들어진다.
주어진 string에 상관없이 고유한 식별자를 만들고 싶을 때 사용한다.
같은 string 같은 symbol 만들고 싶은 경우
const gSymbol1 = Symbol.for('id'); //주어진 string에 같은 symbol 만들어줘
const gSymbol2 = Symbol.for('id');
console.log(symbol1.description);
박스형태. reference가 저장이 된다. 한 번 할당된 object는 다시는 다른 object로 변경이 불가하다.
const ellie = {name:'ellie', age:20};
ellie.age = 21
name, age 와 같은 reference가 저장되는 것!
선언할 때 어떤 type인지 선언하지 않고 프로그램이 동작할 때 (runtime) 할당된 값에 따라서 type이 변경될 수 있는 것.
ex)
runtime 중 숫자가 문자열로 바뀌어 에러가 나타날 수 있다.
-> 이 때 typescript 등장. js 위에 type이 더 올려진 언어.