Java script/개념
함수 선언문 vs 함수 표현식
하로이
2022. 9. 30. 19:37
사실 함수 선언문과 함수 표현식은 실행하는 방식과 동장하는 방식도 동일해서 차이를 잘 느끼지 못합니다. 그럼 그 차이가 뭔지 살펴 보시죠
함수 선언문
어디서든 호출할 수 있습니다.
기본적으로 자바스크립트는 위에서 아래로 차례대로 한줄 씩 읽으면서 실행합니다. 이렇게 순차적으로 실행되고 즉시 반환하는 프로그래밍 언어를 인터프린터 언어라고 합니다.
그런데 이 코드는 실행이 됩니다.
왜 일까요?
이것은 자바 스크립트 내부 알고리즘 때문인데요 자바스크립트는 실행전 초기화 단계에서 코드의 모든 함수 선언문을 찾아서 생성해 둡니다.
그래서 우리가 보는 범위(ex. function 함수 안)와 다르게 사용가능한 범위가 굉장히 커지는데요 이것을 호이스팅(hoisting)이라고 합니다.
함수 표현식
코드에 도달하면 생성
함수 표현식은 자바스크립트가 한줄 씩 읽으면서 실행하고 해당코드에 도달해서야 생성됩니다.
그렇기 때문에 그 이후에만 사용할 수 있습니다.
그럼 무엇을 써야 할까요?
대부분의 상황에서는 무엇을 쓰든 상관없습니다. 하지만 신경쓰기 싫으신 분들은 함수 선언문을 쓰시면 됩니다. 더 자유롭고 편하게 코딩할 수 있습니다.
그럼 이제 어느정도 아셨으니 함수 공부를 해보겠습니다.
화살표 함수(arrow function)
조금 더 간결하게 작성할 수 있습니다.
위에가 그냥 함수고 밑에가 화살표 함수를 이용해 작성한 코드 내용입니다.
let add = function(num1, num2){
return num1 + num2;
}
letadd=(num1,num2) => {
returnnum1+num2;
}
// 지금 이 예재는 코드가 한줄이고 리턴문이 있기 때문에 리턴문은 중괄호{} 아닌 일반괄호()로 바꿀 수 있습니다. 그런데 한줄이면 괄호도 생략 할 수 있습니다.
letadd=(num1,num2) => num1+num2;
인수가 하나면 괄호를 생략할 수 있는데 인수가 없는 경우에는 괄호르 넣어줘야 합니다.