: 특정 값을 표현하기 위해서 사람이 이해할 수 문자, 약속된 기호를 이용하는 notation(표기법)
3 -> 숫자 literal
'Hello' -> 문자 literal
"Hello" -> 문자 literal
`Hello` -> 문자 literal (ES6부터 새롭게 표현)
null -> null literal (null이라는 의미를 나타낸다. 개발자가 직접 사용)
undefined -> undefined literal
(변수가 있는데 아직 초기화 되지 않았다. JavaScript engine이 사용)
{'key':'value'} -> 객체 literal
[1, 2, 3] -> 배열 literal
function(){} -> 함수 literal
: 프로그램의 최소 실행 단위
프로그램은 statement의 집합이라고 할 수 있다. statement의 순서를 정하는 것이 프로그래밍이다.
var sum = 1 + 2;
: 하나의 statement이다. var, sum, 1, +, 2, ; 각각의 요소들 하나를 token이라고 부른다.
;
: statement의 종결을 나타낸다.
JavaScript애서는 ASI를 제공해서 생략해도 알아서 붙여준다. 명확한 코드를 위해서 세미콜론을 생략하지 말아야 한다.
{}
: 중괄호 자체가 self closing 의미를 가지고 있다.
: 평가 과정을 통해 값으로 인식되는 구문
: 총 7개의 데이터 타입이 존재한다.
dynamic typing(동적 타이핑)
: JavaScript는 변수에 값이 할당되는 시점에 Type이 결정된다.
=> Type Inference (타입 추론)
: 정수, 실수를 구분하지 않는다.
내부적으로 모든 숫자는 64-bit 실수로 처리한다.
let myVar = 1.0;
console.log(myVar === 1); // 타입과 값이 일치하는지 확인 할 때 사용한다.
console.log(3/2); // 모두 실수로 처리한다.
실행 결과 :
true
1.5
: ' ' (기본형태), " ", ``
let name1 = '홍길동';
console.log('내 이름은 ' + name1 + '입니다.');
console.log(`내 이름은 ${name1}입니다.`);
실행 결과 :
내 이름은 홍길동입니다.
내 이름은 홍길동입니다.
: true, false
: undefined
: null
: symbol 값
Unique한 값이고, 눈으로 확인이 되지 않는다.(출력을 할 수 없다.)
Symbol()을 이용하여 생성할 수 있다. 심볼을 다른 타입으로 형변환 할 수 없다. 존재하는지 조건문으로 확인은 가능하다. global symbol registry를 사용하지 않는다.
const mySymbol = Symbol();
console.log(typeof mySymbol);
console.log(mySymbol); // 해당 심볼의 값을 알 수가 없다.
const mySymbol1 = Symbol();
const mySymbol2 = Symbol();
console.log(mySymbol1 === mySymbol2); // unique한 값을 만들어낸다.
실행 결과 :
symbol
Symbol()
false
const mySymbol1 = Symbol('소리없는 아우성'); // 인자를 줄 수 있다.
const mySymbol2 = Symbol('소리없는 아우성');
console.log(mySymbol1 === mySymbol2);
console.log(mySymbol1.description);
실행 결과 :
false
소리없는 아우성
const s1 = Symbol.for('mySymbol');
const s2 = Symbol.for('mySymbol');
console.log(s1 === s2)
실행 결과 : true
console.log(Symbol.keyFor(s2));
실행 결과 : mySymbol
const Direction = {
'UP': Symbol(),
'DOWN': Symbol(),
'LEFT': Symbol(),
'RIGHT': Symbol()
}
let myDirection = Direction.DOWN;
if(myDirection == Direction.DOWN){
}