1. Expression 이란?

무엇이든 value를 리턴한다면 expression 이다.


1
5 + 1;
cs


6이라는 value를 리턴하기 때문에 expression 이다.


1
2
3
4
5
function add(a, b){
    return a + b;
}
 
const how = add(56);
cs

add(5, 6) => expression 이다.

그 이유는 11이라는 value를 리턴하기 때문이다.


1
2
3
4
5
function add(a, b){
    a + b;
}
 
const how = add(56);
cs


만약에 return a + b; 구문이 빠진다고 하면

add(5, 6); 은 undefinded를 리턴하게 될것이다.

그래도 add(5, 6)은 expression이다.

즉, javascript는 expression을 value로 대체한다.


2. Statement 이란?

명령 혹은 지시 이다.


1
2
3
if (true){
 
}
cs


if 문은 아무것도 리턴하지 않는다. 그렇기 때문에 지시 / 명령이다.

만약에 아래처럼 statement 를 const에 저장한다면 오류가 발생한다.


1
2
3
const thing = if (true){
 
}
cs


우리가 자주 사용하는 console.log() 도 expression을 넣어주어야 한다.

statement를 넣는다고 하면 오류가 발생한다.

statement의 종류는 if, else, else if, for, while 등이 있다.


3. Function Expression vs Function Declaration

1
2
3
4
5
6
7
const awesome = add(15);
 
function add(a, b){
    return a + b;
}
 
console.log(awesome);
cs


awesome에 add라는 함수를 호출하게 되었고,

그때 존재하지 않는 함수 add를 사용했다.

Function Declaration 모든 함수들을 맨 처음으로 가져와 선언하게 되기 때문에 오류가 발생하지 않는다.

이런것을 함수 호이스팅(hoisting)이라고 한다.


1
2
3
4
5
6
7
const awesome = add(15);
 
var add = function (a, b){
     return a + b;
}
 
console.log(awesome);
cs


Function Expression 은 함수 호이스팅이 적용되지 않기 때문에 이미 선언되어 있지 않은 함수에 대해

호출한다면 오류가 발생한다.


결론

아주 재밌어, 다음편이 기대됨ㅎㅎ

노마드 코더 유튜브 참고했습니다!


'개발 > Javascript Concept 33개' 카테고리의 다른 글

8. IIFE  (0) 2019.05.21
6. Scope  (0) 2019.04.23
1. Call Stack  (0) 2019.04.18

+ Recent posts