-
Notifications
You must be signed in to change notification settings - Fork 13
Function Declarations vs. Function Expressions1
Olaf edited this page May 8, 2019
·
1 revision
function 구문은 함수를 선언합니다.
선언 된 함수는 "나중에 사용하기 위해 저장" 되고 호출 될 때 실행됩니다.
변수 선언은 "var"로 시작해야하는 것처럼 함수의 선언은 "function"으로 시작해야합니다.
function bar() {
return 3;
}
함수를 사용하려면 이름을 사용하여 호출해야합니다. 예: bar ();
함수는 표현식을 사용하여 정의 할 수도 있습니다. 함수 표현식은 변수에 저장 될 수 있습니다.
var x = function (a, b) {return a * b};
함수를 변수에 저장 한 후에 변수를 함수처럼 사용할 수 있습니다. 변수에 저장된 함수에는 함수 이름이 필요없습니다. 변수 이름을 사용하여 호출합니다.
alert(foo()); // ERROR! foo wasn't loaded yet
var foo = function() { return 5; }
alert(foo()); // Alerts 5. Declarations are loaded before any code can run.
function foo() { return 5; }
- 함수 선언은 코드가 실행되기 전에 로드됩니다. 함수 표현식은 인터프리터가 해당 코드 행에 도달 할 때 로드됩니다.
- var 문과 유사하게 함수 선언은 다른 코드의 맨 위로 올라갑니다. 함수 표현식은 호이스트되지 않기 때문에 정의 된 범위의 로컬 변수 복사본을 유지할 수 있습니다.
함수 표현식이 함수 선언식보다 더 유용하게 사용되는 몇 가지 다른 방법이 있습니다.
- 클로저
- 다른 함수에 인수로서
- 즉시 호출 된 함수 식 (IIFE)
일부 의역이 들어간 경우도 있으므로 해당 원문의 내용과 조금 다를 수 있습니다.
문제가 될 소지가 있다거나 혹은 수정이 필요한 사항이 있다면 있다면 issues 보내주세요.
기술문서
- 호출스택
- 원시자료형
- 값타입과 참조타입
- 명시적 변환, 암시적 변환, Nominal, 구조화, 덕 타이핑
- == vs === vs typeof
- 함수 범위, 블록 범위, 렉시컬(lexical) 범위
- 식(expression) vs 문(statement)
- IIFF, Modules, Namespaces
- 메세지큐와 이벤트루프
- setTimeout, setInterval, requestAnimationFrame
- 자바스크립트 엔진
- 비트 연산자, 형식화 배열, 버퍼(배열)
- DOM과 Layout Trees
- 팩토리와 클래스
- this, call, apply, bind
- new, 생성자, instanceof, 인스턴스
- 프로토타입의 상속과 체인
- Object.create와 Object.assign
- map, reduce, filter
- 순수함수, 부수효과, 상태변이
- Closure
- 고차함수
- 재귀
- 컬렉션과 생성기
- Promise
- async, await
- 자료구조
- 함수 성능과 빅 오 표기법
- 알고리즘
- 상속, 다형성, 코드의 재사용성
- 설계패턴
- 부분 어플리케이션, 커링, Compose, Pipe
- 클린코드