on
자바스크립트에서의 함수 선언과 호출
자바스크립트에서의 함수 선언과 호출
1. 전통적인 방식
function func_name(parameter1, parameter2) { ... }
2. 익명함수
- 자바스크립트에서는 함수명을 쓰지 않고 함수를 선언해도 맞는 문법으로 간주한다. 예를 들면, 다음과 같이 쓰더라도 문법 오류가 발생하지 않는다.
function() { ... }
- 다만 이런 식으로 코드를 써봤자 이대로는 이 함수의 호출이 일어나지 않고 호출을 할 방법도 없으므로 이 함수의 내용이 실행되는 일은 없다. 그런데 자바스크립트에서는 다음과 같이 익명함수를 변수에 대입할 수 있으며, 이후 그 변수명을 호출하면 그 함수 내용을 실행시킬 수도 있다.
var func_name = function(parameter1, parameter2) { ... } func_name(p1, p2); //이처럼 함수를 호출하여 func_name에 저장된 익명함수를 호출할 수 있다.
- 이처럼 익명함수를 선언해 이를 변수에 대입하는 식으로 함수를 선언하면, 하나의 함수 내에서만 해당 익명함수가 사용 가능(캡슐화)하다는 특징이 있다.
- 한편, 이처럼 익명함수를 선언한 후에 함수 내용을 다 쓰고 }로 닫은 후 ();를 바로 뒤에 불여 바로 그 함수를 실행시킬 수도 있다. 예를 들어, 다음 코드는 함수를 호출하는 구문이 없음에도 함수의 내용이 실행된다.
var a = function() { ... }();
- 그러나 이러한 호출은 익명함수가 변수명에 저장되는 경우에만 일어나며, 변수 저장 없이 익명함수 뒤에 ();를 붙이는 것은 문법오류로서 익명함수 호출이 일어나지 않는다.
3. 객체의 속성값에 함수를 지정하여 객체의 메서드로서 함수 호출하기
function func_name() { ... } var obj = { method: func_name() }; obj.method();
- 이처럼 객체 obj의 속성명 method를 호출하면 그 속성값으로 지정된 함수 func_name()이 호출된다.
4. 람다식
- 여타 언어에서와 마찬가지로 자바스크립트에서도 람다식으로 익명함수를 선언할 수 있다. 자바스크립트의 람다식은 기본적으로 다음과 같은 형식을 갖는다.
(parameter1, parameter2) => { ... };
from http://lkwks.tistory.com/32 by ccl(A) rewrite - 2021-09-26 16:01:48