생각 주제 :
함수를 선언하는 다양한 방식은 각각 어떤 차이가 있나요?
어떤 경우에 어떤 방식을 활용하고 있나요?
함수 선언문
function 함수이름(복수의, 매개변수는, 콤마로, 구분합니다) {
/* 함수 본문 */
}
- 일반적인 함수가 필요한 경우 가장 적합
- function 정의부만 존재하고 별도의 할당 명령이 없음
- 반드시 함수명이 정의되어야.
- 한번 선언하고 나서, 전체 코드 여러 위치에서 호출할 수 있음
- 함수 호출과 함께 현재 범위에서 변수를 생성하기 때문에 재귀 또는 이벤트 리스너 대응에 유용
- 항상 키워드 function으로 시작함. 그렇지 않으면 전부 표현
함수 표현식
- js는 함수를 특별한 종류의 값으로 취급. (특별한 동작을 하는 구조로 취급하지 X)
- 함수가 변수에 할당. (정의한 function을 별도의 변수에 할당)
let sayHi = function() {
alert( "Hello" );
};
- 화살표 함수와 생략형 화살표 함수도 여기에 포함
- 기명 함수 표현식, 익명 함수 표현식
- 기명 함수 표현식은 외부에서 함수명으로 함수를 호출할 수 없다. 함수명은 오직 내부에서만 접근 가능
함수 표현식 VS 함수 선언문
- 문법의 차이
- 함수 선언문: 함수는 주요 코드 흐룸 중간에 독자적인 구문 형태로 존재
- 함수 표현식: 표현식이나 구문 구성 내부에 생성.
- JS 엔진이 언제 함수를 생성하는지
- 함수 선언문: 함수 선언문이 정의되기 전에도 호출 가능
- 함수 표현식: 실제 실행 흐름이 해당 함수에 도달했을 때 함수를 생성
- 스코프의 차이
- 함수 선언문: 엄격 모드에서 함수 선언문이 코드 블록 내에 위치하면 해당 함수는 블록 내 어디서든 접근할 수 있다. 하지만 블록 밖에서는 함수에 접근할 수 없다.
- 함수 표현식: 블록 밖에 선언한 변수에 함수 표현식으로 만든 함수를 할당하면 블록 밖에서 호출 가능
무엇을 언제 선택하나?
- 함수 선언문을 이용해 함수 선언하는 것을 먼저 고려
- 일반적인 함수가 필요한 경우 가장 적합.
- 코드 구성을 좀 더 자유롭게 가능
- 가독성도 좋아짐
- 조건에 따라 함수를 선언해야 하는 경우는 함수 표현식을 사용
'FE 기술 > JavaScript' 카테고리의 다른 글
JavaScript) Scope (0) | 2023.04.24 |
---|---|
JavaScript) 명령형, 선언형의 차이 (0) | 2023.04.24 |
JavaScript) 상속 (0) | 2023.04.24 |
JavaScript) Class와 함수의 차이 (0) | 2023.04.24 |
JavaScript) static 메서드와 class (0) | 2023.04.24 |
생각 주제 :
함수를 선언하는 다양한 방식은 각각 어떤 차이가 있나요?
어떤 경우에 어떤 방식을 활용하고 있나요?
함수 선언문
function 함수이름(복수의, 매개변수는, 콤마로, 구분합니다) {
/* 함수 본문 */
}
- 일반적인 함수가 필요한 경우 가장 적합
- function 정의부만 존재하고 별도의 할당 명령이 없음
- 반드시 함수명이 정의되어야.
- 한번 선언하고 나서, 전체 코드 여러 위치에서 호출할 수 있음
- 함수 호출과 함께 현재 범위에서 변수를 생성하기 때문에 재귀 또는 이벤트 리스너 대응에 유용
- 항상 키워드 function으로 시작함. 그렇지 않으면 전부 표현
함수 표현식
- js는 함수를 특별한 종류의 값으로 취급. (특별한 동작을 하는 구조로 취급하지 X)
- 함수가 변수에 할당. (정의한 function을 별도의 변수에 할당)
let sayHi = function() {
alert( "Hello" );
};
- 화살표 함수와 생략형 화살표 함수도 여기에 포함
- 기명 함수 표현식, 익명 함수 표현식
- 기명 함수 표현식은 외부에서 함수명으로 함수를 호출할 수 없다. 함수명은 오직 내부에서만 접근 가능
함수 표현식 VS 함수 선언문
- 문법의 차이
- 함수 선언문: 함수는 주요 코드 흐룸 중간에 독자적인 구문 형태로 존재
- 함수 표현식: 표현식이나 구문 구성 내부에 생성.
- JS 엔진이 언제 함수를 생성하는지
- 함수 선언문: 함수 선언문이 정의되기 전에도 호출 가능
- 함수 표현식: 실제 실행 흐름이 해당 함수에 도달했을 때 함수를 생성
- 스코프의 차이
- 함수 선언문: 엄격 모드에서 함수 선언문이 코드 블록 내에 위치하면 해당 함수는 블록 내 어디서든 접근할 수 있다. 하지만 블록 밖에서는 함수에 접근할 수 없다.
- 함수 표현식: 블록 밖에 선언한 변수에 함수 표현식으로 만든 함수를 할당하면 블록 밖에서 호출 가능
무엇을 언제 선택하나?
- 함수 선언문을 이용해 함수 선언하는 것을 먼저 고려
- 일반적인 함수가 필요한 경우 가장 적합.
- 코드 구성을 좀 더 자유롭게 가능
- 가독성도 좋아짐
- 조건에 따라 함수를 선언해야 하는 경우는 함수 표현식을 사용
'FE 기술 > JavaScript' 카테고리의 다른 글
JavaScript) Scope (0) | 2023.04.24 |
---|---|
JavaScript) 명령형, 선언형의 차이 (0) | 2023.04.24 |
JavaScript) 상속 (0) | 2023.04.24 |
JavaScript) Class와 함수의 차이 (0) | 2023.04.24 |
JavaScript) static 메서드와 class (0) | 2023.04.24 |