포코가 값, 식, 문에 대해 설명이 가능한가? 라고 물었다.
값, 식, 문..?? 모르겠다. 😵💫
초심으로 돌아가 값, 식, 문에 대해 정리해보자.
값은 식이 평가되어 생성된 결과를 의미한다.
변수는 하나의 값을 저장하기위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름이다.
const name;
위 예제에서 name이라는 변수는 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름이다.
const name = "kkojae";
name 변수에 할당되는 값은 "kkojae" 라는 문자 값이다. 즉 변수 name이 기억하는 메모리 공간에 저장된 것은 "kkojae" 라는 값이다.
표현식(식)은 값으로 평가될 수 있는 문이다.
즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다.
const score = 100;
위 예제의 정수 리터럴 100은 자바스크립트 엔진에 의해 평가되어 값을 생성하므로 그 자체로 표현식이다.
const score = 50 + 50;
50 + 50은 리터럴과 연산자로 이뤄져 있다.
하지만 50 + 50도 평가되어 숫자 값 100을 생성하므로 표현식이다.
score; // -> 100
변수 식별자를 참조하면 변수 값으로 평가된다.
식별자 참조는 값을 생성하지는 않았지만 값으로 평가되므로 표현식이다.
이처럼 표현식은 리터럴, 식별자(변수, 함수 등의 이름), 연산자, 함수 호출 등의 조합으로 이뤄질 수 있다.
즉, 값으로 평가될 수 있는 문은 모두 표현식이다.
표현식은 값으로 평가된다.
이때 표현식과 표현식이 평가된 값은 동등한 관계이다.
따라서 문법적으로 값이 위치할 수 있는 자리에는 표현식도 위치할 수 있다.
문은 프로그램을 구성하는 기본 단위이자 최소 실행 단위다.
문의 집합으로 이루어진 것이 바로 프로그램이며, 문을 작성하고 순서에 맞게 나열하는 것이 프로그래밍이다.
문을 명령문이라고도 부른다.
즉, 문은 컴퓨터에 내리는 명령이다. 문이 실행되면 명령이 실행되고 무슨 일인가가 일어나게 된다.
// 변수 선언문
let x;
// 할당문
x = 5;
// 함수 선언문
function foo() {}
// 조건문
if (x > 1) {
console.log(x);
}
// 반복문
for (let i = 0; i < 2; i++) {
console.log(i);
}
참고자료: 모던 자바스크립트 DeepDive