사람이 이해할 수 있는 문자나 기호를 사용해서 데이터를 생성하는 표기법을 말한다.
const number = 100;
해당 변수 선언문을 보면 =연산자 다음에 100을 볼 수 있다. 여기서 리터럴은 100이고, 코드를 해석해보면 '상수 number는 100이라는 정수형 데이터를 가진 메모리를 참조하는 식별자다.' 라고 할 수 있다.
💡 : 노농 정확히 얘기하면 우리가 작성한 리터럴이 javascript엔진에 의해서 데이터로 변환이 되는 것이라고 할 수 있다. 그러니 우리가 에디터에서 끄적인 소스코드 중 데이터랍시고 끄적인 문자 or 기호가 리터럴인거고, 그 리터럴을 엔진에서 해석한게 데이터라는 것.
절대 리터럴=데이터가 아니다.
이 모든 과정은 런타임 시점에서 이루어진다.
const number = 100; //정수형 데이터를 생성
const number = 10.5; //소수형 데이터를 생성
const number2 = 0b0101; //0b로 시작
const number8 = 0o101; //0o로 시작
const number16 = 0x41; //0x로 시작
여담으로 8진수와 16진수 표기법은 ES6에서부터 도입되었다.
const charset = 'hello'; //문자형 데이터를 생성
'' or ""로 표기하게 되면 문자형 리터럴로 인식하게 된다.
const charset = `hello`; //문자형 데이터를 생성
ES6에서 도입된 표기법이다. 다른 문자열 리터럴과 다르게 ``을 사용하며 표현식/문자열 삽입, 여러 줄 문자열, 문자열 형식화, 문자열 태깅 등 다양한 기능을 제공한다.
const bool = true;
const bool2 = false;
const nope = null;
const nono = undefined;
const object = {
a: 1,
b: 'omg',
c: {
a: 10,
b: 'god',
},
};
console.log('object : ' + JSON.stringify(object, null, 4));
console.log('object의 a : ' + object.a); //1
console.log('object의 b : ' + object.b); //omg
console.log('object의 c : ' + JSON.stringify(object.c, null, 4));
console.log('object의 c의 a : ' + object.c.a); //10
console.log('object의 c의 b : ' + object.c.b); //god
{ }, ( )로 표기하게 되면 객체로 인식하게 된다.
JavaScript가 가지는 고유의 리터럴로 객체 자체를 데이터화 시키는 특징이 있다. (객체 리터럴을 사용하는 또 다른 언어가 있다면 알려주길 바란다.)
처음에는 객체안의 key와 value를 분리하고 value만을 데이터로 생성하는줄 알았는데,
위 로그에서 object.c의 로그와 object.c.a , object.c.b의 로그를 보면 c는 데이터가 되기도 하고, 하위 객체의 식별자가 되기도 하는 것을 볼 수 있다.
이걸 교수님께도 여쭤봤는데 교수님도 객체 자체를 값으로 생성하는걸로 판단된다고 하신다.
권장하는 방법은 아니지만..
const d = (omg);
이렇게 끄적이면 객체리터럴로 인식한다..ㅋ
const func = function() {};
//함수객체 데이터를 생성
Javascript 함수의 성질에 따라 리터럴로 표기가 가능하다. 함수에 대한 자세한 내용이 궁금하다면 여기 들어가서 한 번 쓱 읽어보자.
표기법은 function() {} 이다.
const arr = [1, 2, 3, 4];
//배열 데이터를 생성
표기법은 []이다.
const exp = /[A-Z]+/g