5-1 값
값은 식(표현식)이 평가되어 생성된 결과를 말한다.
var sum = 10 + 20;
// 변수에는 10 + 20이 평가되어 생성된 숫자 30이 할당된다
5-2 리터럴
리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법.
5-3 표현식
값으로 평가 될 수 있는 문이다. 즉, 표현식이 평가되면 새로운 값을 생성하거나 기존값을 참조함.
var score = 100; // 리터럴 : 100
var score = 50 + 50; // 리터럴과 연산자. 값 100 생성. 표현식.
score; // →100
변수 식별자를 참조하면 변수 값을 평가된다.
식별자 참조는 값을 생성하지않지만 값으로 평가되므로 표현식이다.
(값으로 평가될 수 있는 문은 모두 표현식이다.)
10
'Hello'
sum
person.name
arr[1]
10 + 20
sum = 10
sum !== 10
square()
person.getName()
표현시근 값으로 평가된다. 이때 표현식과 표현식이 평가된 값은 동등한 관계, 즉 동치다. 1 + 2가 평가되어 값3을 생성한다면 1 + 2와 3은 동치다. 따라서 표현식은 값처럼 사용 될 수 있다.
산술 연산자 +의 좌항과 우하에는 숫자 값이 위치해야 한다.
숫자값으로 평가 될 수 있는 표현식이라면 숫자 값 대신 사용 가능.
var x = 1 + 2;
x + 3;
5-4 문
문은 프로그램을 구성하는 기본단위이자 최소 실행 단위다. 문의 집합으로 이루어진 것이 바로 프로그램이며, 문을 작성하고 순서에 맞게 나열하는 것이 프로그래밍이다. 문은 여러 토큰으로 구성된다. 토큰이란 문법적인 의미를 갖고 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 말한다. 문은 명령문이라고 부르며 컴퓨터에 내리는 명령이다. 문이 실행되면 명령이 실행된다.
var x;
x = 5;
function foo() {}
if (x > 1) { console.log(x) };
for (var i = 0; i < 2; i++) { console.log(i); }
5-5 세미콜론과 세미콜론 자동 삽입 기능
세미콜론은 문의 종료를 말한다. 세미콜론으로 문이 종료한 위치를 파악하고 순차적으로 하나씩 문을 실행한다. 0개 이상의 문을 중괄호로 묶은 코드 블록({ ... }) 뒤에는 세미 콜론을 붙이지 않는다. 예를 들어 if문, for문, 함수 등의 코드 블록 뒤에는 세미 콜론을 붙이지 않는다.
function foo() {
return
{}
// ASI의 동작 결과 : return; {};
// 개발자의 예측 : return {};
}
console.log(foo()); // undefined
var bar = function () {}
(function() {}) ();
// ASI의 동작 결과 : var bar = function () {}(function() {})();
// 개발자의 예측 : var bar = function () {}; (function() {} ();
// TypeError: ... is not a function
5-6 표현식인 문과 표현식이 아닌 문
var x; // 변수 선언문은 값으로 평가 될 수 없음. 표현식 아님.
x = 1 + 2;
// 1, 2, 1 + 2, x = 1 + 2 모두 표현식. 완전한 문.
표현식인 문과 표현식이 아닌 문을 구별하는 가장 간단한 방법은 변수에 할당해 보는 것이다.
var foo = var x; // SyntaxErro: Unexpected token var
var x; // 변수 선언문은 표현식이 아닌 문
x = 100; // 할당문은 표현식. 완전한 문
var foo = x = 100;
console.log(foo); //100