let
- 변수 mutable
var (r/w)
- 변수 mutable
- 호이스팅
- {}괄호 안에 선언해도 접근가능
- 문제가 많으므로 사용하지 마라
const (read only) (r/w)
- 상수 immutable
- 한번 정의하면 변경 불가능
- 가능하면 const 사용 - 변경시킬 수 없어서 안전함 해커 값 변경 스레드 동시 값 변경 실수 방지
let과 var은 variable 로 read와 write가 가능하지만 const는 read만 가능
primitive, single item: number, string, boolean, null, undefined, symbol
object, box container
functionm first-class function
- number: 숫자
특별한 숫자 값 - Infinity, -Infinity, NaN(숫자가 아닌 경우)- string: 문자나 문장
string끼리 더하면 이을 수 있지만 백틱을 이용한 templete literals(string)을 더 많이 씀const name = 'ryucandoit' console.log('hello '+name); // hello ryucandoit console.log(`hello ${ryucandoit}`); // hello ryucandoit
- boolean: 참과 거짓
false - 0, null, undefined, Nan, ''
true - 아무 값null과 undefined 차이: null은 값에 null이라고 할당, undefined은 선언은 되었지만 값이 없는 상태
const a = null; // null const b; // undefined
- symbol: 고유한 식별자가 필요할 경우 사용
const symbol1 = symbol("a"); const symbol2 = symbol("a"); console.log(symbol1 === symbol2); // fasle //같은 심볼을 만들려면 const symbol3 = Symbol.for("a"); console.log(symbol1 === symbol3); // true // 심볼 값 출력할땐 description 사용해야 함 console.log(symbol3.description); // a
- object: 객체
const person = {name:ryucandoit, job:"programmer"} // 상수로 정의된 person은 변경할 수 없지만 그 안에 정의된 변수 name과 job은 변경 가능 person.name = "cadoit"; person.job = "developer"; console.log(`name: ${person.name}`); // name: candoit console.log(`job: ${person.job}`); // job: developerprimitive type은 값이 메모리에 저장되고 object는 object가 담겨있는 reference가 메모리에 저장 됨