07.Expression vs. Statement
- Expression
Expression returns a value
무언가 결과(Value)를 return하는 문장
ex1) 5 + 11 > 16이라는 결과를 return하므로 Expression
ex2)
function add(a, b) {
return a+b;
}
console.log(add(5,6));
> add(5,6) 도 11이라는 결과를 return하므로 Expression
자바스크립트는 Expression을 value로 대체하고, 작업을 계속 진행한다.
- Statement
Statement는 명령. 혹은 지시이다.
ex1) 예를 들어 아래와 같은 코드블럭은 아무것도 리턴하지 않는다. 지시. 명령이다.
if(true) {
}
ex2) 아래와 같은 문장은 에러를 발생시킨다. return되는 Value가 없는 Statement를 Variable로 저장할 수 가 없기 때문이다.
const thing = if(true) {
}
결론. Variable로 저장할 수 있는 건 Expression이다.
Expression은 Value를 리턴한다.
Statement는 그냥 명령이다.
if, else, for, while... 등등
function Expression vs. function declaration
const awesome = add(1,5);
function add(a,b) { // << 함수의 선언식(function declaration)
return a+b;
}
console.log(awesome)
위 문장은 에러를 발생시키지 않는다.
라인 1에서는 존재하지 않던 함수를 사용했고, 결과는 6이 반환된다.
이것이 가능한 이유는
자바스크립트가 코드를 보면, 모든 declaration(함수의 선언식)을 상단으로 가져온다.
이것이 자바스크립트에서 존재하는 hoisting이라는 프로세스이다.
때문에 위와 같은 코드가 에러를 발생시키지 않는 것이다.
반면에, 아래와 같은 코드는 에러를 발생시킨다.
const awesome = add(1,5);
const add = (a, b) => a + b; // << 함수의 표현식(function expression)
console.log(awesome)
이유는 함수의 표현식은 hoisting이 되지 않기 때문에, 1번 라인에서 add는 존재하지 않는 것이 되기 때문이다.
이것이 함수의 선언문과 표현식의 가장 중요한 차이점이다.
'Javascript' 카테고리의 다른 글
JavaScript 개발자가 알아야할 33개 컨셉 09. Message Queue and Event Loop (0) | 2019.12.31 |
---|---|
JavaScript 개발자가 알아야할 33개 컨셉 08.IIFE, Modules and Namespaces (0) | 2019.12.30 |
JavaScript 개발자가 알아야할 33개 컨셉 06.Scope (0) | 2019.12.01 |
JavaScript 개발자가 알아야할 33개 컨셉 05.Typeof (0) | 2019.11.25 |
JavaScript 개발자가 알아야할 33개 컨셉 04.Type conversion (0) | 2019.11.24 |