이 글은 'Udemy'의 코스 중 하나인 'The Complete JavaScript Course 2019: Build Real Projects!' 의 강의 일부를 번역한 글입니다.


statement와 expression의 차이점은 먼저 JavaScript의 expressions 들은 항상 Value를 생산하는 코드의 조각들입니다. 그리고 코드가 하나의 값을 갖는 한 코드의 길이는 얼마나 길든 상관없습니다. 이를테면, 만약 당신이 "2+3"이라는 쉬운 코드를 작성한다고 가정했을 때, 이게 결과를 만들어낸다는 사실을 알 수 있습니다. 이 경우 '5' 라는 값이 나오는데 우리는 방금 여기 자바스크립트의 expression을 쓴 겁니다.



예를 들어, 위와 같이 함수를 정의하고 브라우저의 콘솔(command+option+J)에 함수를 호출해봅시다. 우리가 지금 이 함수를 콘솔에 호출했을 때, 당신은 당연히 이것이 값을 리턴한다는 것을 볼 수 있습니다. 그래서 여기 이 함수를 호출하는 것이 'expression' 입니다. 다시 말하지만, 결과를 만들어내는 것이 expression 입니다.

또 한가지 예를 들어, typeof 23 을 콘솔에 써봅시다. 이것은 우리에게 number 라는 결과를 리턴합니다. 이것은 expression 입니다. 이것이 의미하는 것은 언제나 JavaScript는 값(Value)를 기대한다는 것입니다. 그래서 우리는 항상 expression을 써야합니다. 이런 모든 개념의 중요한 점은 아마도 요점을 잡기에 조금 어려울 겁니다. 하지만 미래를 위해 이런 것들을 배워놓는 것은 정말 중요합니다.



또 하나, 여기 if-else statement가 있습니다. JavaScript는 물론 여기에 Value가 오기를 기대합니다. 여기서 이것을 하기 위해서는 expression이 필요합니다. 물론 이 연산자는 TrueFalse 중 둘중 하나를 리턴할 것이고, 그것이 결과가 되기 때문입니다. 그러므로 이것 if (BMIMark > BMIJohn)은 expression 입니다.

이제 statements에 관해서, 이것들은 단지 행동만을 취합니다. 그래서 그들은 무언가를 하긴 하지만, 즉각적인 결과를 만들어내지는 않습니다. 이것들은 if-else statement 같은 것들을 말합니다. 그들은 즉각적인 결과를 만들어내지 못하기 때문에, 그들은 'statement' 로 불립니다. 여기 콘솔창을 다시 한번 보겠습니다.



저는 아주 단순한 if-else statement를 콘솔에다 적을 예정입니다. if (true) {console.log(23);} 여기에 무작위로 랜덤한 숫자를 적어봅시다. 이 숫자의 의미는 별로 중요하지 않습니다. 그리고 Enter 키를 눌러봅시다. 그러면 당신은 지금 이곳에서 이것이 반환한 undefined 라는 것을 볼 수 있습니다.

즉, 이것은 어떤 것도 반환하지 않습니다. 여기서 이 23 이라는 숫자는 단순히 여기 콘솔에서 나온 것입니다. 하지만 statement 이것 자신들은 아무 값도 반환하지 않았어요. 즉, 이 statement는 아무 결과도 반환하지 않습니다. 그래서 이것이 expression과 statement의 차이점입니다.