업데이트:

4장에서 변수를 다루면서 ‘값’이라는 용어를 정말 많이 사용하였다.

그런데 값이라는 용어의 의미를 설명할 수 있는가?

개념을 이해했다면 용어를 정확히 이해하고 설명할 수 있어야한다.

이번 장에서는 값을 비롯해 앞으로 자주 사용할 용어의 의미를 깊이 익히는 것이 목적이다.

값(value)

📝 값은 식이 평가되어 생성된 결과를 말한다.

말이 추상적이어서 어려우니 예제를 통해 값의 의미를 파악해보겠다.

10+20; 
// 10+20(식)이 평가(계산)되어 30이라는 결과를 생성한다 => 30이 값이라는 뜻

🎯 여기서 10+20은 표현식이라고 부른다.

var sum = 10+20;
// 변수 sum에 평가된 값 30이 할당된다.

위 코드를 보면 변수 sum에는 10+20이 저장되는 것이 아니라 평가된 값 30이 저장된다.

🎯 30은 리터럴이라고 부른다.


이전 챕터에서 값의 할당은 런타임에 실행된다고 배웠다.

💁🏻‍♀️ 그렇다면, 값의 평가는 언제 일어날까?

⇒ 10+20은 할당 이전에 평가되어 값을 생성해야 한다. 즉, 런타임 이전에 평가 된다고 볼 수 있다.

리터럴(literal)

📝 리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.
var num = 3; //리터럴
var sum = 10+20; //표현식

자바스크립트 엔진은 런타임에 리터럴을 평가해 값을 생성한다.

Untitled

표현식(expression)

📝 표현식은 값으로 평가될 수 있는 문이다.

표현식이 평가되면 10+20 = 30 처럼 새로운 값을 생성하거나 기존 값을 참조한다.

// 리터럴 표현식
100; 

// 연산자 표현식 
50+50; //새로운 값 생성 

// 식별자 표현식
sum; // 기존 값을 참조 

// 함수/메소드 호출 표현식
square()

// 식별자 표현식과 숫자 리터럴과 연산자의 조합
x + 30;  

결국 평가되어 하나의 값을 만든다는 점에서 동일하다.

문(statement)

📝 문(statement)은 프로그램을 구성하는 기본 단위이자 최소 실행 단위이다.

📍 문의 집합 ⇒ 프로그램

📍 문을 작성하고 순서에 맞게 나열하는 것 ⇒ 프로그래밍

결국, 개발자가 프로그래밍을 한다는 것은 을 작성하고 순서에 맞게 나열하는 것이라고 볼 수 있다.

Untitled

위 그림을 보면 문은 각각의 토큰으로 구성되어 있다.

토큰은 의미를 지니고 있으며 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소들이다.

세미콜론과 세미콜론 자동 삽입 기능(ASI)

문을 끝낼 때는 세미콜론을 붙여야 하지만 중괄호로 묶은 코드 블록 뒤에는 붙이지 않는다.

중괄호로 묶인 코드 블록은 if문, for문, 함수 등이 있는데 이들은 자체 종결성을 갖기 때문에 세미콜론을 생략해도 된다.

🔍 ASI(automatic semicolon insertion) : 세미콜론 자동 삽입 기능

세미콜론은 사실 생략 가능하다. 자바스크립트 엔진이 문의 끝이라고 생각하는 시점에 세미콜론을 자동으로 붙여준다.

⚠ 개발자가 세미콜론 자동 삽입 기능의 동작을 제대로 에측하지 못하면 제대로 활용되지 못하는 경우가 있으니 주의해야 한다.

책에서는 세미콜론을 붙인다고 하지만 알고리즘 문제를 풀 때만큼은 빠른 코딩을 하는 것이 중요하므로 세미콜론을 붙이지 않는 것이 좋을 것 같다.’

표현식인 문과 표현식이 아닌 문 구별법

표현식과 표현식이 아닌 문의 가장 명료한 방법은 변수에 할당(=)해보는 것이다.

var foo = 5*10; //1번: 표현식이 아닌 문 (선언문)
x = 100; // 2번: 표현식인 문 (할당문)

var foo = x = 100; //표현식인 문은 값처럼 사용할 수 있다.

var 키워드가 있다는 것은 선언문이라는 것이므로 1번 문은 값으로 평가될 수 는 없다.

1번 문을 변수에 할당 해보자.

var x = var foo = 5 * 10

위 코드는 옳지 않은 코드이다. 그렇다면 1번 문은 표현식이 아닌 문이라는 결론이 나온다.

이렇게 하나의 문을 변수에 할당해보면, 표현식과 표현식이 아닌 문을 구별할 수 있다 !

댓글남기기