익명함수(Anonymouse function)

자바스크립트 익명 함수는 함수명 대신 변수명에 함수 코드를 저장하는 구현 방식이다.

익명 함수의 소스 코드는 변수값이므로 끝에 세미콜론 ;을 대입한다. 익명 함수는 호출 시 변수명을 함수명처럼 사용하면 된다.

var hello = function(){
	console.log("Hello World!");
};

hello();
var hi = function() {
	var z = a + b;
	retrun z;
}
var apple = function() {
	var name = 'closure';
	return function inner() 
}

Closure

클로저는 두 개의 함수로 만들어진 환경으로 이루어진 특별한 객체의 한 종류

클로저를 통해서 자바스크립트에 없는 비공개 속성/메소드, 공개 속성/메소드를 구현할 수 있는 방안을 마련한다.

클로저 생성

조건

  1. 내부 함수가 익명 함수로 되어 외부 함수의 반환값으로 사용된다.
  2. 내부 함수는 외부 함수의 실행 환경(execution environment)에서 실행된다.
  3. 내부 함수에서 사용되는 변수 x는 외부 함수의 변수 스코프에 있다.
function outer() {
  var name = `closure`;
  function inner() {
    console.log(name);
  }
  inner();
}
outer();
// console> closure