익명 함수 JavaScript 코딩 개념 - 익명 함수

익명 방법이란 무엇이며 언제 사용해야 합니까?



정의



Anonymous Functions - In computer programming, an anonymous function (function literal, lambda abstraction, or lambda expression) is a function definition that is not bound to an identifier. Anonymous functions are often[1] arguments being passed to higher-order functions, or used for constructing the result of a higher-order function that needs to return a function. If the function is only used once, or a limited number of times, an anonymous function may be syntactically lighter than using a named function. Anonymous functions are ubiquitous in functional programming languages and other languages with first-class functions, where they fulfill the same role for the function type as literals do for other data types.


Coding Concepts 시리즈에서 다루는 모든 주제와 마찬가지로 이러한 프로그래밍 아이디어는 지금까지 한동안 있었습니다. 1958년 Lisp가 데뷔한 이후 프로그래밍 언어에는 익명 함수가 존재했습니다! 내 예제는 JavaScript에서 다시 한 번 시연됩니다. JavaScript의 등장과 언어의 비교적 단순한 특성으로 인해 예제를 제공할 때 코딩하기가 쉬워졌습니다. 수년 동안 C#을 사용하면서 람다 함수(화살표 함수 표기법 =>)는 대리자 및 무명 메서드와의 첫 번째 상호 작용이었으며 여기서부터 이들에 대한 지식이 시작되었습니다.

An anonymous function is a function that is not stored, but is associated with a variable. Anonymous functions can accept inputs and return outputs, just as standard functions do.


일반 기능 정의




// run the function 
sayHello(); // See that this can be before the function declaration

function sayHello() (
  alert("Hello");
}




익명 함수 정의





var sayHello = function {
alert('Hello');
}
sayHello(); // This needs to be after declaring the anon func



그렇다면 이 2개는 어떻게 다를까요? 가장 먼저 이해해야 할 것은 일반 함수는 다른 코드보다 먼저 실행된다는 것입니다. 즉, 함수를 사용하기 전에 선언할 필요가 없습니다. 익명 함수는 런타임에 생성됩니다.

첫 번째 예를 다시 보면 sayHello()는 선언 전에 작성되지만 두 번째는 선언 뒤에 작성됩니다! 두 번째 예는 이전에 작성된 경우 작동하지 않으며 코드를 보면 의미가 있지만 왜 허용됩니까? 함수 선언은 함수 이름을 사용하여 현재 범위에서 변수를 만듭니다. 이러한 함수는 함수에 이름이 있어야 하므로 익명 함수를 만드는 데 사용할 수 없습니다.

Anonymous functions are declared using the function operator instead of the function declaration.


따라서 본질적으로 익명 함수에는 이름이 없습니다!

이상해 보이지만 선언이 변수를 생성하기 때문에 작동합니다. 익명 함수의 이름을 설정하지 않아도 되는 것은 때때로 함수 이름이 중요하지 않기 때문에 편리합니다.

이 줄을 여러 번 사용했을 것입니다. 이것이 익명 방법이라는 것을 알고 계셨습니까?

$(document).ready(function () {
alert("Hello");
});


언제 사용합니까?



일회용 방법은 이 원칙을 언제 사용해야 하는지에 대한 완벽한 예입니다! 메서드를 바로 사용하거나 if 문 또는 for 루프 내에서 사용하려는 경우에도 매우 유용합니다.

for(var x=0; x<=3; x++) {
var helloFunction= function() {
alert("Hello Mr " + x + ");
}
helloFunction();
}


함수 연산자(익명) 구문은 함수 선언(표준)보다 더 간결합니다. 한 줄 이벤트 핸들러에 이상적이며 DOM 요소 스타일링을 신속하게 처리합니다. 메서드를 변수에 직접 바인딩하면 구현을 더 쉽게 찾을 수 있고 함수 이름이 충돌할 수 있는 전역 범위 문제를 중지할 수 있습니다. JQuery와의 충돌 및 발생할 수 있는 모든 소란에 대해 이야기하지 말자. jQuery.noConflict()는 대부분의 조직에서 너무 많이 사용됩니다!

var wordHouse = {
 hello: function() { alert("Hello"); }
}
wordHouse.hello();


함수 연산자도 표현식이므로 위와 같이 멋진 일을 할 수 있습니다! wordHouse를 확장하여 다른 단어를 말할 수 있습니다. 함수를 배열의 항목으로 생성한 다음 반복할 수도 있습니다!

// create an array on anonymous methods
var helloToday = [
 function() { alert("Hello Monday")},
 function() { alert("Hello Tuesday")},
];

// loop over the array
for(var x=0; x< helloToday.length; x++) {
 helloToday[x]();
}


익명 메서드/함수에는 더 많은 부하가 있으며 선택한 언어에 따라 약간 다르게 작동합니다. 따라서 해당 주제에 대해 더 자세히 알고 싶다면 추가 자료를 살펴보십시오.


유용한 정보를 놓친 적이 있습니까? 추가적으로 추가하실 사항이 있으신가요? 익명 방법을 흥미로운 방식으로 사용합니까? 그렇다면 아래에 공유하십시오!

읽어 주셔서 감사합니다.

크리스

추가 읽기



WikiBooks - JavaScript Anonymous Functions

Stack Overflow - Anonymous Functions vs Clousures

Function Declarations vs Function Operators

Self Executing Anonymous Functions

좋은 웹페이지 즐겨찾기