값은 식이 평가되어 생성된 결과.
모든 값은 데이터 타입을 가지며, 메모리에 2진수(비트)의 나열로 저장됨. 메모리에 저장된 값은 데이터 타입에 따라 다르게 해석될 수 있음.// 10 + 20은 평가되어 숫자 값 30 생성.
10 + 20; // 30
// sum 변수에는 10 + 20이 평가되어 생성된 숫자 값 30 할당.
var sum = 10 + 20;
사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법.
값을 생성하는 가장 기본적인 방법.// 숫자 리터럴 3
3
값으로 평가될 수 있는 문(statement).
표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조함.var score = 100;
var score = 50 + 50;
score; // 100
값으로 평가될 수 있는 문은 모두 표현식
임.// 리터럴 표현식
10
"Hello"
// 식별자 표현식 (선언이 이미 존재한다고 가정)
sum
person.name
arr[1]
// 연산자 표현식
10 + 10
sum = 10
sum !== 10
// 함수/메서드 호출 표현식 (선언이 이미 존재한다고 가정)
square()
person.getName()
프로그램을 구성하는 기본 단위이자 최소 실행단위.
문의 집합으로 이뤄진 것이 프로그램이며, 문을 작성하고 순서에 맞게 나열하는 것이 프로그래밍임.token이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미.
예를 들어, 키워드, 식별자, 연산자, 리터럴, 세미콜론이나 마침표 등의 특수 기호는 문법적인 의미를 가지며 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소이므로 모두 토큰임. // 변수 선언문
var x;
// 할당문
x = 5;
// 함수 선언문
function foo () {}
// 조건문
if (x > 1) { console.log(x); }
// 반복문
for (var i = 0; i < 2; i++) { console.log(i); }
세미콜론(;)은 문의 종료를 나타냄.
문을 끝낼 때는 세미콜론을 붙여야 함.// 조건문
if (x > 1) { console.log(x); }
// 반복문
for (var i = 0; i < 2; i++) { console.log(i); }
function foo() {
return;
{}
}
// ASI의 동작 결과 => return {};
// 개발자의 예측 => return {};
console.log(foo()); // Output: undefined
var bar = function () {}
(function() {})();
// ASI의 동작 결과
// => var bar = function () {}(function() {})();
// 개발자의 예측
// => var bar =function () {}; (function() {})();
// TypeError; (intermediate value)(...) is not a function
// 변수 선언문은 값으로 평가될 수 없으므로 표현식 X.
var x;
// 1, 2, 1 + 2, x = 1 + 2 는 모두 표현식임.
// x = 1 + 2 는 표현식이면서 완전한 문.
x = 1 + 2;
// 표현식이 아닌 문은 값으로 평가될 수 없음.
// 변수 선언문은 값처럼 사용할 수 없음.
var foo = var x; // SyntaxError: Unexpected token 'var'
// 변수 선언문은 표현식이 아닌 문.
var x;
// 할당문 x = 100 은 그 자체가 표현식임. 값처럼 사용 가능.
x = 100;
// 표현식인 문은 값처럼 사용할 수 있음.
var foo = x = 100;
console.log(foo); // Output: 100