무엇이든 value를 리턴한다면 expression 이다.
5 + 1; //6이라는 값을 만들어내기 때문에 expression
function add(a, b){
return a + b;
}
const how = add(5, 6); //11이라는 값을 만들어내기 때문에 expression
function add(a, b){
a + b;
}
const how = add(5, 6); //expression, 그 이유는 undefined를 만들어 냄
명령 혹은 지시 이다.
//아무것도 만들어내지 않는다. 그렇기 때문에 지시/명령이다.
if(true){
...
}
const thing - if(true){...}
대표적으로 if
, else
, else if
, for
, while
등이 있다.
const awesome = add(1, 5);
function add(a, b){
return a + b;
}
console.log(awesome);
awesome에 add라는 함수를 호출하게 되었고, 그때 존재하지 않는 함수 add를 사용했다.
하지만, Function Declaration으로 작성된 모든 함수들을 맨 처음으로 가져와 선언하게 되기 때문에 오류가 발생하지 않는다.
이를 함수 호이스팅(hoisting)이라고 한다.
const awesome = add(1, 5);
var add = function (a, b){
return a + b;
}
console.log(awesome);
Function Expression 은 함수 호이스팅이 적용되지 않기 때문에 이미 선언되어 있지 않은 함수에 대해 호출한다면 오류가 발생한다.
Expression 은 어떠한 값(숫자, 문자열, 객체, null, undefined 등)을 만들어내는 식
Statement 는 값을 만들어내지 않고 상태 동작을 지시하거나 명령하는 문