본문 바로가기
Language/JavaScript

[JavaScript] expression 과 statement의 차이

by 며루치꽃 2021. 1. 5.

1. 표현식(expressoin)

 

표현식(expressoin)은 값을 만들어 냅니다. 표현식은 우리가 원하는만큼 길어질 수 있으나 항상 동일한 값이 나오지는 않습니다. 표현식은 값을 하나로 만들어내는 작은 조각입니다. 

1 + 2

예를 들어, 1 + 2 는 값을 만들어냅니다.

3

3도 single value 이지만, 마찬가지로 expression 입니다. 3이라는 값을 만들어 내기 때문입니다.

true && false && !false

위 예시도, boolean 값을 만들어내기 때문에 expression 입니다. 

 

간단히 요약해보자면, 표현식(expressoin)은 스스로 값을 만들어냅니다.

 

2. 문장(statement)

 

문장(statement)은 실행했을 때 좀 더 큰 조각입니다. 그리고 표현식과의 가장 큰 차이점은 문장(statement)은 스스로 값을 만들어내지 못합니다. 기본적으로 문장(statement)은 어떤 것을 실행합니다.

자바스크립트에서 문장은 값이 들어와야 할 곳에 들어갈 수 없습니다. 그래서 그들은 함수의 인자로도, 대입 연산의 값으로도, 연산자의 피연산자로도 사용될 수 없습니다.

if(23 > 10){
    const str = 'He is famous'
}

여기서는 if statement 라는 실행을 하고 여기서는 str 변수를 선언하고 있지만, 이 것은 단순히 변수를 선언하고 있지 값을 스스로 만들어내지는 못합니다. 

 

간단히 요약해보자면, 문장(statement)은 full sentence 같기 때문에 우리의 action을 해석하고 실행하지만 스스로 값을 만들어내지는 못합니다. 

 

console.log(`I'm ${2037 - 1991} years old`);

console.log(`I'm ${2037 - 1991} years old ${if(23 > 10){
    const str = 'He is famous'
}}`)

위에서는 값을 만들어내는 expression이기에 정상적으로 작동하지만, 

아래와 같은 예시는 값을 만들어내지 않은 문장으로 인식하기에 식이 필요하다는 오류를 발생시키게 됩니다.  

const me = 'kchmin';
console.log(`I'm ${2037 - 1991} years old ${me}`);

 

이 경우에는 me라는 변수 자체가 kchmin 이라는 값을 만들어내고 있기 때문에 정상적으로 작동하게 됩니다. 

 

 

 

댓글