Expression vs Statement
이걸 이해하면 코드를 읽을때 도움이 많이 된다. 코드를 많이 읽든, 안읽든 도움이 될 것이다.
Expression 은 무엇인가?
이건 value 를 리턴하는 무언가를 뜻한다. 뭔가 value가 되는것.
5 + 1 // 6 바로 이것은 expression 이다. 자바스크립트는 이걸 가져다가 6이라고 리턴할 것이다.
function add(a,b){
return a + b; // return 없이 a+b 일 경우 undefined
}
const how = add(5,6);
바로 이것, 이것이 expression이 될것이다.
그 이유는 value를 return 하기 때문이다. return 하는 곳에서 return이 없으면 이건 undefined 그것 역시 value이다.
console.log(how) 하면 11 이될 것이다. 이게 expression이며 무언가를 value를 리턴하는 것이다.
복잡한 함수를 읽는다면 기억해야될껀 함수가 return 하는 것은 무엇인가이다.
그렇다면 statement는 무엇인가?
명령 혹은 지시라고 보면 된다.
if(true) {
}// 이건 아무것도 리턴하지 않는다. 이건 지시, 명령이기 때문이다 이걸 const로 저장하면 어떻게 될까?
const thing = if(true){
} // error 가 생길 것이며 statement를 variable 로 저장할 수가 없는 것을 알 수 있다.
Variable 로 저장할 수 있는건 expression 이다. statement는 그렇게 못한다. 그 이유는 이 sign은 expression을 기대하고 있기 때문이다.
const thing = if(true){} // = 이건 statement를 핸들 할 수 없다
console.log(if(true){}) // console.log 또한 마찬가지이며 expression을 기대하고 있기 때문이다.
Statement는 그냥 명령이며 그 종류는 다음과 같다.
if,else,Else if, for, while.... 이런 지시들은 다 statement라고 보면 된다.
이번엔 function expression 그리고 function declaration을 설명해 보자. 왜냐면 약간 다르기때문이다.
declaration은 다음과 같다.
const awesome = add(1, 5);
function add(a, b){
return a + b;
}
console.log(awesome) //이제 6을 받게 될것이다 라인1에서는 존재하지 않던 함수를 사용했으며 근데 에러가 없이 6을 얻게 되었다.
// 이게 바로 function declaration 그리고 function expression의 차이이다.
// 자바스크립트를 보면 모든 declaration을 상단으로 가져온다. 이건 hoisting 이라는 프로세스이며
// 자바스크립트가 이렇게 엄청나게 빠르게 옮겨놓을 거라는것이다.
// 하지만 다음과 같다면?
const awesome = add(1,5);
const add = (a,b) => a+b;
console.log(awesome)
// Not defined 그 이유는 이건 이제 expression 이기 때문이다.
'JavaScript > TIL' 카테고리의 다른 글
[TIL] #8. Message Queue and Event Loop (0) | 2020.08.17 |
---|---|
[TIL] #7. IIFE (0) | 2020.08.17 |
[TIL] #5. Scope (0) | 2020.08.17 |
[TIL] #4. TYPE OF (0) | 2020.08.17 |
[TIL] #3. Type Coercion (0) | 2020.08.16 |