// 10 + 20이 평가되어 숫자 값 30을 생성 10 + 20; // 30
// sum 변수에 10 + 20이 평가되어 생성된 숫자 값 30이 할당 var sum = 10 + 20;
아라비아 숫자를 사용해 숫자 리터럴 3을 평가해 값 3을 생성
// 숫자 리터럴 3 3
// 리터럴 표현식 10 'Hello'
// 식별자 표현식 (선언이 존재한다고 가정) sum person.name arr[1]
// 연산자 표현식 10 + 20 sum = 10 sum !== 0
// 함수/메서드 호출 표현식 (선언이 존재한다고 가정) square() person.getName()
var x = 1 + 2; // 식별자 표현식 x는 3으로 평가 x + 3; // 6
token : 문법적 의미를 가지며, 더이상 나눌 수 없는 코드의 기본 요소
ex) 키워드, 식별자, 연산자, 리터럴, 세미콜론(;), 마침표(.) 등
// 변수 선언문 var x;
// 할당문 x = 5;
// 함수 선언문 function foo () {}
// 조건문 if (x > 1) { console.log(x); }
// 반복문 for (var i = 0; i < 2; i++) { console.log(i); }
세미콜론 (;) : 문의 종료를 나타냄
옵션이며 생략 가능, 세미콜론 자동 삽입 기능 (ASI)이 암묵적 수행됨
하지만, 기능의 동작을 예측하지 못해 활용하지 못하는 경우도 발생
중괄호로 묶은 코드블록 ({...}) 뒤에는 세미콜론을 붙이지 않음
ex) if 문, for 문, 함수 등 -> 코드블록은 자체 종결성을 갖기 때문
// 변수 선언문은 값으로 평가될 수 없으므로 표현식이 아닌 문 var x; // 1, 2, 1 + 2, x = 1 + 2 는 모두 표현식 // x = 1 + 2 는 표현식이자 완전한 문 x = 1 + 2;
// 표현식이 아닌 문은 값처럼 사용 불가 var foo = var x;
// 할당문은 그 자체가 표현식이지만 완전한 문, 할당문 = 표현식인 문 x = 100;
// 표현식인 문은 값처럼 사용할 수 있다 var foo = x = 100; console.log(foo); // 100
:: 완료 값은 표현식의 평가 결과가 아니여서 다른 값과 같이 변수에 할당, 참조 불가
표현식이 아닌 문을 실행하면 undefined 출력
표현식인 문은 평가된 값을 반환