피리부는 사나이 (pied piper)

[JS] 함수 표현식 VS 함수 선언식 본문

Java Script

[JS] 함수 표현식 VS 함수 선언식

코더 451 2022. 2. 17. 11:38

함수 표현식 복습

콜백 함수 (자바스크립트의 정신을 대변)

https://ko.javascript.info/function-expressions

함수 ask의 인수, showOk와 showCancel은 콜백 함수 또는

콜백이라고 불린다.

값으로서의 함수

함수를 함수의 인수로 전달하고 필요하다면 인수로 전달한

그 함수를 나중에 호출하는 것이 콜백 함수의 개념

익명 함수 : 변수에 할당 된게 아니기때문에 선언된 함수 밖에서

접근할 수가 없음.

함수는 “동작"을 나타내는 값

문자열이나 숫자는 데이터를 나타냄

함수는 하나의 action을 나타냄

함수 선언문과 함수 표현식의 차이

함수 선언문

// 함수 선언문
function sum(a, b) {
  return a + b;
}

함수 표현식 독자적인 구문형태로 존재

그러나, 함수 표현식은 표현식이나 구문 구성 내부에 생성

// 함수 표현식
let sum = function(a, b) {
  return a + b;
};

두 번째 차이가 중요

자바스크립트 엔진이 언제 함수를 생성하는지가 차이

따라서 실행 흐름이 함수에 도달했을 때부터 해당 함수를 사용할 수 있습니다.

위 예시를 이용해 설명해 보도록 하겠습니다. 스크립트가 실행되고, 실행 흐름이 let sum = function…의 우측(함수 표현식)에 도달 했을때 함수가 생성됩니다. 이때 이후부터 해당 함수를 사용(할당, 호출 등)할 수 있습니다.

함수표현식은 흐름이 해당 함수에 도달했을 때 생성

반대로 선언문은 선언문이 정의되기 전에도 호출될 수 있음

스크립트는 함수 선언문이 모두 처리된 이후에서야 실행됩니다. 따라서 스크립트 어디서든 함수 선언문으로 선언한 함수에 접근할 수 있는 것입니다.

함수 선언문은 선언된 코드 불록안에서만 유효 (중괄호 안에서 선언된 함수 선언문은 중괄호 밖에서는 선언되지 않는다는 이야기

해결법 : if문 안에 있는 함수 선언문을 표현식으로 바꾸면 호출된다

if문 밖에 선언한 변수 welcome에 함수 표현식으로 만든

함수는 중괄호 밖에서도 가능함

함수 선언문과 표현식 중 무엇을 선택해야하는가?

함수 선언문을 선언하는 것을 고려하는게 좋다고함

함수가 선언되기 전에 호출할 수 있어서 코드 구성을 좀더 자유롭게 할 수 있음. 또한 가독성도 좋다.

'Java Script' 카테고리의 다른 글

[JS] preventSubmit : 기본 동작 막는 방법  (0) 2022.03.21
[JS] 지역 변수와 전역 변수  (0) 2022.03.02
[JS] 배열과 객체의 차이  (0) 2022.02.16
[JS] 콜백 함수  (0) 2022.02.16
메서드와 This  (0) 2022.02.15
Comments