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(5, 6); | cs |
add(5, 6) => expression 이다.
그 이유는 11이라는 value를 리턴하기 때문이다.
1 2 3 4 5 | function add(a, b){ a + b; } const how = add(5, 6); | 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(1, 5); 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(1, 5); 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 |