const arrow1 = (a: number, b: number):number => {return a + b}
cosnt arrow2 = (a: number, b: number) : number=> a + b
위와 같이 중괄호 사용 여부에 따라 타입스크립트 문법이 동작하는 방식이 실행문 방식(execution statement)과 표현문 방식(expression statement)으로 달라진다.
실행문과 표현문을 동시에 지원하는 언어를 다중 패러다임 언어(multi-paradigm-language) 라고 한다.
프로그래밍 언어에서 실행문은 CPU에서 실행되는 코드를 의미하고 실행문은 CPU에서 실행만 될 뿐 결과를 알려주지 않는다.
그 결과를 알고 싶으면 반드시 return 키워드를 사용해야 한다.
반면, 표현식 문은 CPU에서 실행된 결과를 return 키워드 사용하지 않고 얻을 수 있다.
let x = 10
if(x>0)
x = 1
2번째 행에서 조건문을 cpu가 평가한 후 true나 false라는 값으로 결과를 알려주지 않으면 정상적으로 동작할 수 없다.
하지만 return 키워드를 사용하지 않고도 표현문 방식으로 작동되기 때문에 코드 실행이 가능하다.
if(조건식)
실행문
보통 프로그래밍 언어에서는 if와 같은 구문은 조건을 만족하면 한줄의 실행문만 실행하는 것으로 설계되어 있다.
여러 실행문이 존재하면 복합 실행문을 통해서 이용하는데 우리가 대부분은 처음 공식처럼 배웠던 if(조건식){실행문} 형태이다.
if(조건식){
실행문 1
실행문 2
}
복합 실행문은 바디(중괄호) 안에 있는 실행문을 한개 처럼 인식하게 된다.
function 키워드로 만드는 함수도 반드시 바디를 중괄호를 감싸야 하는데 복합 실행문을 의미한다.
따라서 함수 바디는 여러 줄로 구현이 가능한 것이다.
function f(){
let x = 1, y =2
let result = x + y
}
실행문은 cpu에서 실행된 결과를 알려주지 않는다. 복합 실행문으로 구현한 함수는 true나 false를 반환하지 않는데 이러한 문제를 해결하려고 return 키워드를 도입했다.
function f(a: number, b: number) : boolean{
a > b //결과를 반환하지 않음
}
//return 키워드 적용
function f(a: number, b: number) : boolean{
return a > b //결과를 반환함
}
바로 위의 코드를 화살표로 구현하면 다음과 같다.
const f = (a: number, b: number) : boolean => {
return a > b;
}
이렇게 번거로움을 해소하기 위해 return과 중괄호 없이 사용하는 표현식으로 구현가능하다.
const f = (a: number, b: number) : boolean => a > b
만약 중괄호 없이 return 키워드를 사용하면 오류를 반환한다.
(복합 실행문에서만 가능하기 때문이다.)