Skip to content
Home » 자바 스크립트 익명 함수 | 8-1. 자바스크립트 함수(선언함수 Vs 익명함수) 5575 투표 이 답변

자바 스크립트 익명 함수 | 8-1. 자바스크립트 함수(선언함수 Vs 익명함수) 5575 투표 이 답변

당신은 주제를 찾고 있습니까 “자바 스크립트 익명 함수 – 8-1. 자바스크립트 함수(선언함수 vs 익명함수)“? 다음 카테고리의 웹사이트 https://kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://kk.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 coding404 이(가) 작성한 기사에는 조회수 267회 및 좋아요 5개 개의 좋아요가 있습니다.

Table of Contents

자바 스크립트 익명 함수 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 8-1. 자바스크립트 함수(선언함수 vs 익명함수) – 자바 스크립트 익명 함수 주제에 대한 세부정보를 참조하세요

자바 스크립트 익명 함수 주제에 대한 자세한 내용은 여기를 참조하세요.

익명함수(Anonymous function) – velog

자바스크립트 익명 함수는 함수명 대신 변수명에 함수 코드를 저장하는 구현 방식이다. 익명 함수의 소스 코드는 변수값이므로 끝에 세미콜론 ; 을 대입 …

+ 여기에 보기

Source: velog.io

Date Published: 1/28/2021

View: 6428

자바스크립트 익명 함수의 구조와 간단한 예제 – dasima

자바스크립트 익명 함수는 함수명이 없는 대신 함수 소스 코드를 변수명에 저장해서 함수를 만드는 기능입니다. 함수 호출시 변수명이 함수명을 대신 …

+ 여기에 표시

Source: dasima.xyz

Date Published: 11/15/2022

View: 4174

[Javascript] 일반 함수 vs 익명 함수 – 개발하는 사막여우

익명 함수는 재사용 하지 않는, 한번만 사용할 함수를 위한 개념으로, 따로 함수의 이름을 갖지 않는다. 리터럴(Literal) 방식으로 변수에 담겨 사용하는 …

+ 여기를 클릭

Source: dev-note-97.tistory.com

Date Published: 6/18/2022

View: 4739

javascript 익명함수 간단정리 – Fall in IT.

javascript에서는 함수를 선언하는 방법이 다양합니다. 함수 선언하는 방법에 대해서 간단히 알아보고, 언제 사용되는지 알아보도록 하겠습니다.

+ 여기를 클릭

Source: ithub.tistory.com

Date Published: 10/23/2022

View: 4997

[JavaScript]익명 함수(Anonymous Functions)

익명 함수 JavaScript의 익명 함수는 이름이 없는 함수입니다. 함수 표현식으로 익명 함수를 변수에 할당하지 않거나 또는 익명 함수를 소괄호로 …

+ 자세한 내용은 여기를 클릭하십시오

Source: developer-talk.tistory.com

Date Published: 9/10/2022

View: 1347

[JS] 익명 함수 – novDev

JavaScript는 함수를 다른 언어와 달리 “특별한 종류의 값”으로 취급한다. 따라서 JS에서는 함수를 변수에 대입할 수 있다. 익명 함수란, 단어 뜻 그대로 …

+ 자세한 내용은 여기를 클릭하십시오

Source: novlog.tistory.com

Date Published: 4/12/2022

View: 2447

[javascript] “(function () {…}) ()”와 같은 익명 함수로 … – 리뷰나라

()”와 같은 익명 함수로 전체 Javascript 파일을 래핑하는 목적은 무엇입니까? … 최근에 많은 Javascript를 읽었으며 가져올 전체 .js 파일에서 전체 파일이 다음과 …

+ 여기에 표시

Source: daplus.net

Date Published: 1/29/2021

View: 3676

javascript 익명 함수 이해

javascript 익명 함수 이해. 6522 단어 JavaScript. 코드는 다음과 같습니다. … 이 절에서 우리가 만났던 jQuery 세션은 바로 실행되는 익명 함수입니다.

+ 여기에 자세히 보기

Source: intrepidgeeks.com

Date Published: 11/10/2022

View: 5939

자바 스크립트 익명 함수 | 혼공 자바스크립트 32강 – 1111.com.vn

자바스크립트 익명 함수(anonymous function) 기명 함수 … … 함께보면 좋은 글 2020/07/05 – [프로그래밍 언어/Javascript] – 자바 … 자 오늘은 자바 …

+ 여기에 더 보기

Source: you.1111.com.vn

Date Published: 8/24/2021

View: 3907

[JavaScript] 익명함수와 기명함수, 언제 써야할까? – owen.dev.log

익명함수와 기명함수. Javascript 에서 함수를 정의할 때 함수의 이름을 지정하지 않는 익명함수 와. 그 반대인 기명함수 방식으로 정의를 할 수 …

+ 여기에 자세히 보기

Source: handhand.tistory.com

Date Published: 8/2/2021

View: 2926

주제와 관련된 이미지 자바 스크립트 익명 함수

주제와 관련된 더 많은 사진을 참조하십시오 8-1. 자바스크립트 함수(선언함수 vs 익명함수). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

8-1. 자바스크립트  함수(선언함수 vs 익명함수)
8-1. 자바스크립트 함수(선언함수 vs 익명함수)

주제에 대한 기사 평가 자바 스크립트 익명 함수

  • Author: coding404
  • Views: 조회수 267회
  • Likes: 좋아요 5개
  • Date Published: 2020. 5. 31.
  • Video Url link: https://www.youtube.com/watch?v=ENxNnjzAgs0

익명함수(Anonymous function)

익명함수(Anonymous function)

자바스크립트 익명 함수는 함수명 대신 변수명에 함수 코드를 저장하는 구현 방식이다. 익명 함수의 소스 코드는 변수값이므로 끝에 세미콜론 ; 을 대입한다. 익명 함수는 호출 시 변수명을 함수명처럼 사용하면 된다.

구조

var 변수명 = function ( 매개변수 ) { 실행문 ; } ;

이 경우 변수값을 변수에 넣은 형태이므로 함수 코드 끝에 세미콜론을 붙여준다.

hello라는 변수명에 “Hello World!”라는 문자가 출력되는 함수 코드를 저장했다.

hello()로 익명 함수를 호출하면, 소스코드가 실행된다.

< script > var hello = function ( ) { document . write ( “Hello World!” ) ; } ; hello ( ) ; < / script >

익명함수 + 반환문

return 제어문으로 반환이 되는 경우는 익명 함수를 다른 명령어에 대입시키면 된다.

함수를 괄호와 함께 변수처럼 원하는 곳에 기입하면 된다.

var hi = function ( ) { var string = “Hello World!” ; return string ; } ; document . write ( hi ( ) ) ;

익명 함수의 매개 변수와 반환문이 모두 있는 경우에도 정상 함수와 똑같이 작동한다.

var fusion = function ( a , b ) { var z = a + b ; return z ; } ; document . write ( fusion ( “Hello” , “World!” ) ) ;

익명함수의 변수명 변경

익명 함수는 함수 코드가 변수명에 저장된 형태이다.

따라서 변수값으로 구성된 함수 코드를 다른 변수명에 마치 변수를 대입하듯이 이동시킬 수 있다.

자바스크립트에서 등호 = 기호는 좌변과 우변의 같음을 의미하는 것이 아니다.

우변의 값을 좌변에 대입하라는 의미이다. 그래서 기호 이름도 대입 연산자 = 이다.

apple 변수명에 저장되어 있던 함수 코드가 변수명 banana에도 대입되었다.

var apple = function ( ) { document . write ( “This is a banana.” ) ; } ; var banana = apple ; banana ( ) ;

단점

호이스팅(함수 선언 보다 함수 호출이 윗 줄에 위치해도 실행되는 기능)이 적용되지 않는다.

orange ( ) ; var orange = function ( ) { document . write ( “This is an orange.” ) ; } ;

반면 일반적인 함수명으로 작성한 함수는 선언부가 후반에 와도 함수 호출은 잘 작동한다.

Good ( ) ; function Good ( ) { document . write ( “Good Job!” ) ; }

익명 함수는 호이스팅이 작동하지 않고, 일반 함수는 작동한다.

출처 : https://dasima.xyz/javascript-anonymous-function/

자바스크립트 익명 함수의 구조와 간단한 예제

자바스크립트 익명 함수는 함수명 대신 변수명에 함수 코드를 저장하는 구현 방식입니다. 익명 함수의 소스 코드는 변수값이므로 끝에 세미콜론 ; 을 대입합니다. 익명 함수는 호출시 변수명을 함수명처럼 사용하면 됩니다.

자바스크립트 익명 함수 구조

자바스크립트의 익명 함수(anonymous function)는 변수에 함수의 코드를 저장하는 대신 함수명을 사용하지 않습니다. 대신 변수명을 마치 함수명처럼 사용해서 함수를 호출하거나 변수값을 이동시키는데 사용할 수 있습니다.

이 경우 변수값을 변수에 넣은 형태이므로 함수 코드 끝에 세미콜론을 붙여줍니다.

hello 라는 변수명에 “Hello World!” 라는 문자가 출력되는 함수 코드를 저장했습니다. hello() 로 익명 함수를 호출하면, 소스코드가 실행됩니다.

결과

Hello World!

TRY IT ▷

자바스크립트 익명 함수 + 반환문

return 제어문으로 반환이 되는 경우는 익명 함수를 다른 명령어에 대입시키면 됩니다. 함수를 괄호와 함께 변수처럼 원하는 곳에 기입하면 됩니다.

결과

Hello World!

TRY IT ▷

자바스크립트 익명 함수 매개 변수 O, 반환문 O

익명 함수의 매개 변수와 반환문이 모두 있는 경우에도 정상 함수와 똑같이 작동합니다.

결과

HelloWorld!

TRY IT ▷

자바스크립트 익명 함수의 변수명 변경

익명 함수는 함수 코드가 변수명에 저장된 형태입니다. 따라서 변수값으로 구성된 함수 코드를 다른 변수명에 마치 변수를 대입하듯이 이동시킬 수 있습니다.

자바스크립트에서 등호 = 기호는 좌변과 우변의 같음을 의미하는 것이 아닙니다. 우변의 값을 좌변에 대입하라는 의미입니다. 그래서 기호 이름도 대입 연산자 = 입니다.

apple 변수명에 저장되있던 함수 코드가 변수명 banana 에도 대입되었습니다.

결과

This is a banana.

TRY IT ▷

자바스크립트 익명 함수 단점 : 호이스팅 불가

자바스크립트 익명 함수는 호이스팅(함수 선언 보다 함수 호출이 윗 줄에 위치해도 실행되는 기능)이 적용되지 않습니다.

결과

오류

반면 일반적인 함수명으로 작성한 함수는 선언부가 후반에 와도 함수 호출은 잘 작동합니다.

결과

Good Job!

TRY IT ▷

익명 함수는 호스팅이 작동하지 않고, 일반 함수는 작동합니다.

[Javascript] 일반 함수 vs 익명 함수

반응형

자바스크립트는 유연한 언어이다. 따라서 다른 일반적인 언어(Java, C)와 다르게, 함수를 선언하고 사용하는데 있어 굉장한 자유로움이 주어진다. 이는 능숙한 사람에게는 굉장한 이점으로 주어질 수 있지만, 미숙한 사람에게는 넘어야 할 허들이 되기도 한다. 자바스크립트에서 함수 선언 방식은 기본적으로 일반 함수와 익명 함수로 나눌 수 있다.

1. 일반 함수

일반적으로 다른 언어에서 사용하는 함수와 동일하다. 사용방식 또한 동일하며, 코드를 조금이라도 읽을 수 있는 사람이라면 매우 쉽게 이해할 수 있는 함수이다. 일반 함수는 다른 말로 함수 선언식이라고도 할 수 있다.

function 함수명(){ 함수 로직 } // 예시 function SayHello(){ console.log(“hello!”); } SayHello(); // 출력: hello!

일반 함수는 자바스크립트가 처음 읽힐 당시에 해석되므로, 함수가 쓰여진 위치가 상관없다. 이를 호이스팅이라고 하는데, 호이스팅이란 쉽게 말해 자바스크립트가 처음 읽힐 당시에 모든 객체(변수, 함수)의 선언부를 맨 위로 끌어올리는 것이다. 일반 함수는 함수 전체(함수명, 함수바디)가 통째로 호이스팅 되어 맨 위로 올라가기 때문에 위치 상관없이 읽을 수 있는 것이다.

SayHello(); // “hello!” 가 정상적으로 출력됨. function SayHello(){ console.log(“hello!”); } SayHello(); // “hello!” 가 정상적으로 출력됨. // 호이스팅 된 모습 // // function SayHello(){ <- 함수 선언이 먼저 일어나고, // console.log("hello!"); // } // // SayHello(); <- 첫 번째 SayHello(); // SayHello(); <- 두 번재 SayHello(); 2. 익명 함수 우선 익명함수 자체는 다음과 같은 형태를 가지고 있다. 일반 함수와 비교하여보면, 함수의 이름이 존재하지 않는다. function() { console.log("hello!"); } 익명 함수는 재사용 하지 않는, 한번만 사용할 함수를 위한 개념으로, 따로 함수의 이름을 갖지 않는다. 리터럴(Literal) 방식으로 변수에 담겨 사용하는 함수이다. ("함수의 이름 != 변수" 임을 확실히 이해해야한다.) 리터럴(Literal) 방식이란 글자 뜻 그대로 "문자 그대로 읽히는 방식"을 의미하며, 일반적으로 변수에 데이터를 넣을 때 사용하는 방식이 리터럴 방식이다. // 리터럴 방식 let a = 10; const b = 20; 리터럴 방식으로 사용되는 익명 함수는, 변수에 저장되게 된다. //익명 함수 const sayHello = function() { console.log("hello!"); } sayHello(); // 출력: hello! 다시 한번 말하지만, 함수가 이름을 갖는 것과 변수에 저장되는 것은 다르다. 이 차이점은 어디서 오냐면, 위에서 언급한 호이스팅의 개념에서 온다. 위의 일반함수의 경우, 함수 전체가 전부 맨 위로 올라가므로 함수를 호출하는 위치에 상관없이 사용될 수 있다고 했다. 반면, 리터럴 방식으로 사용되는 익명 함수의 경우, 호이스팅 시 함수를 담는 변수의 선언부만 위로 올라가고, 익명 함수 자체는 변수가 호출되었을 때 실행되기 때문에, 선언부가 호출 위치보다 위에 있어야 한다. 코드로 보면 다음과 같다. //익명 함수 sayHello(); // Uncaught ReferenceError: Cannot access 'sayHello' before initialization let sayHello = function() { console.log("hello!"); } sayHello(); // 위에서 에러가 났으니 출력이 나오지 않음 // 이 자바스크립트를 읽을 때(호이스팅 된 모습) // // const sayHello; // // sayHello(); <- sayHello의 초기화가 진행되지 않았다. // // sayHello = function(){ // console.log("hello!"); // } // // sayHello(); <- 초기화는 진행된 후 불렸으니, 원래대로라면 출력 가능 3. 결론 1) 일반 함수는 전역적이며, 전체가 다 호이스팅 되므로 호출의 위치와 구현의 위치간에 연관관계가 없다. 또한, 재사용될 기능에 주로 사용된다. 2) 익명 함수는 선언부만 호이스팅되며 호출의 위치와 구현의 위치간에 순서가 알맞아야 하고, 한번만 사용하는 기능에 사용된다. 위 말만 보면 익명 함수가 오히려 번거로운 것처럼 보일 수 있지만, 이는 메모리 관리에 효과적인 방안이 될 수 있다. 일반 함수는 자바스크립트를 초기에 읽어올 때 모두 호이스팅된다고 하였다. 만약, 전체 자바스크립트 내에서 단 한번만 쓰이는 함수가 일반 함수로 구현되어 있다고 가정해보자. 이 함수는 자신이 사용될 단 한번을 기다리며 불필요하게 메모리를 차지하고 있어야 한다. 메모리 사용량이 성능에 중요한 영향을 미칠 수 있는 웹 애플리케이션에서, 이는 메모리 낭비라고 볼 수 있다. 따라서 단 한번만 사용되는(재사용이 필요없는) 함수의 경우, 불필요한 시간동안 메모리를 차지하지 않도록 익명함수로 구현한다면, 정확히 해당 함수가 필요한 위치에서만 해당 함수가 구현되고 사라지면서 메모리를 아낄 수 있게 된다. <참고>

https://joshua1988.github.io/web-development/javascript/function-expressions-vs-declarations/

https://hamdi.tistory.com/9

https://gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html

https://powerku.tistory.com/136

반응형

javascript 익명함수 간단정리

javascript에서는 함수를 선언하는 방법이 다양합니다.

함수 선언하는 방법에 대해서 간단히 알아보고, 언제 사용되는지 알아보도록 하겠습니다.

함수 선언 종류와 사용법

일반적인 방법

function testFuction () {

// logic

}

//실행

testFuction(); // “()”는 함수를 실행시키겠다는 약속된 문법입니다. 만약, testFunction; 이라고 했다면 변수로 인식할 것 입니다.

function testFuction () { // logic } //실행 testFuction(); // “()”는 함수를 실행시키겠다는 약속된 문법입니다. 만약, testFunction; 이라고 했다면 변수로 인식할 것 입니다. 일반적인 방법2

var testFunction = function() {

// logic

}

//실행

testFunction();

var testFunction = function() { // logic } //실행 testFunction(); 익명함수: 이름이 없는 함수로, 즉시 실행이 필요할 경우 사용합니다.

(function () {

//logic

})() ;

[JavaScript]익명 함수(Anonymous Functions)

익명 함수

JavaScript의 익명 함수는 이름이 없는 함수입니다. 함수 표현식으로 익명 함수를 변수에 할당하지 않거나 또는 익명 함수를 소괄호로 감싸지 않으면 다음과 같이 함수 이름이 필요하다는 구문 오류가 발생합니다.

function() { console.log(‘Hello’); };

에러 내용

구문 오류를 해결하기 위해 익명 함수를 변수에 할당하거나 익명 함수를 소괄호로 감쌉니다.

다음 예제는 익명 함수를 소괄호로 감싸며, 함수 표현식이 반환되는 것을 확인할 수 있습니다.

(function() { console.log(‘Hello’); });

실행 결과

다음 예제는 익명 함수를 변수에 할당 후 함수를 호출합니다.

let hello = function() { console.log(‘Hello’); } hello(); // Hello

JavaScript의 익명 함수는 초기 생성 후 접근할 수 없습니다. 따라서 익명 함수를 사용하기 위해서는 변수에 할당해야 하며, 함수가 할당된 변수를 함수 변수라고 말합니다.

익명 함수를 인수로 사용

익명 함수는 다른 함수의 인수로 전달되거나 반환될 수 있습니다.

다음 예제는 익명 함수를 다른 함수의 인수로 전달합니다.

// show() 함수는 단일 함수를 인자로 가집니다. function show(func) { func(); }; // show() 함수에 익명 함수를 인수로 전달합니다. show(function() { console.log(‘익명 함수 호출’); });

실행 결과

익명 함수 호출

위 예제에서 show() 메서드는 함수를 인자로 가지는 함수입니다. ‘익명 함수 호출’이라는 문자열을 콘솔에 출력하는 익명 함수를 show() 함수에 전달했으며, 익명 함수에 의해 출력된 내용을 콘솔에서 확인할 수 있습니다.

다음은 익명 함수를 함수에 전달하는 유명한 또 다른 예제입니다. setTimeout() 함수는 인자로 전달받은 함수를 n초 후 실행합니다.

setTimeout(function () { console.log(‘3초 후 실행’); }, 3000);

실행 결과

3초 후 실행

함수 선언 후 즉시 호출

때로는 함수를 선언한 직후 바로 호출해야 하는 경우가 존재합니다. 익명 함수를 소괄호로 감싸고 뒤에 소괄호를 추가하여 익명 함수를 즉시 호출할 수 있습니다.

(function() { console.log(‘Hello’); })();

다음 예제처럼 소괄호에 인수를 전달할 수 있습니다.

(function(text) { console.log(text); })(‘hi’);

화살표 함수

JavaScript에서 화살표 함수는 익명 함수의 또 다른 사용 방법입니다. 익명 함수를 사용하면 코드를 더 짧고 간결하게 작성할 수 있으므로 코드의 가독성을 증가시킵니다.

// 1. 단일 매개변수인 경우 param => expression // 2. 여러 개의 매개변수 (param1, param2, param3) => expression // 3. 0개의 매개변수 () => expression // 4. 여러 개의 매개변수와 여러 줄의 코드가 존재 (param1, param2, param3) => { // code… return value; }

화살표 함수의 표현식이 간단하여 한 줄로 작성할 수 있는 경우 return 키워드와 중괄호를 생략할 수 있습니다.

정리

JavaScript에서 이름이 없는 함수를 익명 함수라고 말합니다.

익명 함수를 호출하기 위해서는 변수에 할당해야 합니다.

화살표 함수는 일종의 익명 함수입니다.

반응형

[JS] 익명 함수

반응형

* 개인적인 공부 내용을 기록하는 용도로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다.

* 지속적으로 내용을 추가해 나갈 예정이며 지적은 언제나 환영합니다.

[JS] 함수 선언문 에서 함수 선언문 (Function Statement) 방식을 이용해 함수를 선언하는 방법에 대해 정리했다.

이번 포스팅 에서는 함수 표현식 방법중 익명 함수를 이용해 함수를 선언 및 실행 하는 방법에 대해 정리 하고자 한다.

# 익명 함수

호이스팅

사용이유

정리

# 익명 함수

JavaScript는 함수를 다른 언어와 달리 “특별한 종류의 값”으로 취급한다. 따라서 JS에서는 함수를 변수에 대입할 수 있다.

익명 함수란, 단어 뜻 그대로 이름이 없는 함수로 함수를 재사용할 필요가 없을 때 사용하는 함수이다. 익명 함수는 변수에 대입하는 방식으로 사용한다.

익명함수의 기본형은 다음과 같다. 이 때 익명 함수는 “값” 이기에, 함수 선언문 방식과 달리 끝에 세미콜론(;)을 붙여 주어야 한다.

[기본형] var/let/const 변수명 = function(매개변수, ..) { 실행문; };

다음은 hello 변수에 “Hello, JS”를 출력하는 익명함수를 대입한 후, 변수명을 이용해 익명함수를 호출한 예제이다.

let hello = function() {document.write(“Hello, JS”)}; hello();

[실행결과] Hello, JS

익명함수는 다른 변수에 대입하거나 또 다른 함수의 매개변수로 사용 가능하다.

let hello = function() {document.write(“Hello, JS”)}; let another = hello; another();

[실행결과] Hello, JS

호이스팅

그렇다면 일반 함수(함수 선언문 방식을 이용한 함수)와 익명 함수는 어떤 차이가 있는 것일까?

우선, 익명 함수는 일반 함수와 달리 호이스팅이 일어나지 않는다. 호이스팅에 대해 간단하게 설명하자면, 함수의 선언과 초기화를 분리한 후, 선언만 코드의 최상단으로 옮기는 것 처럼 해석하는 것이다.

아래 코드를 살펴보자. hello는 함수 선언문 방식으로 선언된 일반 함수 이므로, 호이스팅이 발생한다. 따라서 JS는 hello 함수의 선언과 초기화를 분리하여 선언을 해당 블록 최상단으로 옮겨서 해석한다. 그렇기에 함수 선언 이전에 함수를 사용해도 에러 메시지가 발생하지 않는다.

hello(“Hello, JS!”); function hello(text) { document.write(text); }

function hello(); // hoisting hello(“Hello, JS!”); function hello(text) { document.write(text); }

이번에는 같은 코드를 익명 함수 방식으로 작성해 보았다. 익명 함수는 호이스팅이 발생하지 않기에, 함수 선언 이전에 함수를 호출하니 함수가 선언되지 않았다는 경고 메시지가 출력된다.

hello2(“Hello, JS!”); let hello2 = function(text) { document.write(text); }

VM1970:1 Uncaught ReferenceError: hello2 is not defined at :1:1

함수 호출부를 익명함수 뒤로 옮기니 정상적으로 작동한다.

let hello2 = function(text) { document.write(text); } hello2(“Hello, JS!”);

[실행결과] Hello, JS!

사용이유

JavaScript 내에서 단 한번만 사용하는 함수는 일반 함수가 아닌 익명 함수로 사용하는 것이 좋다. 앞에서 설명했듯이, 일반 함수는 호이스팅이 발생하기에 항상 메모리를 차지하고 있어야 한다. 하지만 한 번 사용을 위해서 메모리를 잡고 있는 것은 매우 비효율 적이다. 따라서 재사용이 필요 없는 함수의 경우 익명 함수로 구현하여 불필요하게 메모리를 낭비하지 않도록 하는 것이 좋다!

정리

일반 함수는 호이스팅의 영향을 받지만, 익명 함수는 영향을 받지 않는다.

단 한번만 사용하는 함수의 경우에 익명 함수로 구현하여 메모리 낭비를 최소화하자!

반응형

[javascript] “(function () {…}) ()”와 같은 익명 함수로 전체 Javascript 파일을 래핑하는 목적은 무엇입니까?

일반적으로 네임 스페이스 (나중에 참조)에 있으며 멤버 함수 및 / 또는 변수의 가시성을 제어합니다. 그것을 객체 정의처럼 생각하십시오. 이에 대한 기술적 이름은 IIFE (Inmediately Invoked Function Expression )입니다. jQuery 플러그인은 일반적으로 다음과 같이 작성됩니다.

자바 스크립트에서는 함수를 중첩 할 수 있습니다. 따라서 다음은 합법적입니다.

function outerFunction () { function innerFunction () { // code } }

이제 전화를 걸 수 outerFunction() 있지만의 가시성은 innerFunction() 의 범위로 제한 outerFunction() 됩니다 outerFunction() . 기본적으로 Javascript의 변수와 동일한 원칙을 따릅니다.

var globalVariable ; function someFunction () { var localVariable ; }

해당 :

function globalFunction () { var localFunction1 = function () { //I’m anonymous! But localFunction1 is a reference to me! }; function localFunction2 () { //I’m named! } }

위 시나리오에서는 globalFunction() 어디서나 전화 를 걸 수 있지만 localFunction1 또는 전화를 걸 수는 없습니다 localFunction2 .

당신이 쓸 때하고있는 일은 (function() { … })() 첫 번째 괄호 안의 코드를 함수 리터럴로 만드는 것입니다 (전체 “객체”가 실제로 함수임을 의미합니다). 그 후에 () 방금 정의한 함수 (final )를 자체 호출합니다 . 앞에서 언급했듯이 이것의 가장 큰 장점은 개인 메소드 / 함수 및 속성을 가질 수 있다는 것입니다.

( function () { var private_var ; function private_function () { //code } })();

첫 번째 예에서는 globalFunction 이름 으로 명시 적으로 호출 하여 실행합니다. 즉, 당신은 globalFunction() 그것을 실행하려고 할 것입니다. 그러나 위 예제에서 함수를 정의하는 것이 아닙니다. 한 번에 정의 하고 호출합니다. 즉, JavaScript 파일이로드되면 즉시 실행됩니다. 물론, 당신은 할 수 있습니다 :

function globalFunction () { // code } globalFunction ();

IIFE를 사용할 때 전역 범위를 오염시키지 마십시오 (결과적으로 이름이 없기 때문에 함수를 여러 번 호출 할 수 없음을 의미 함). 이 함수는 실제로 문제가되지 않는 경우에만 실행되도록되어 있습니다).

IIFE의 깔끔한 점은 내부를 정의하고 원하는 부분 만 외부 세계에 노출시킬 수 있다는 것입니다 (이름 공간 지정의 예를 통해 기본적으로 자체 라이브러리 / 플러그인을 만들 수 있음).

var myPlugin = ( function () { var private_var ; function private_function () { } return { public_function1 : function () { }, public_function2 : function () { } } })()

이제 전화 myPlugin.public_function1() 를 걸 수 있지만 액세스 할 수 없습니다 private_function() ! 클래스 정의와 매우 비슷합니다. 이것을 더 잘 이해하려면 다음 링크를 참조하십시오.

편집하다

나는 언급하는 것을 잊었다. 마지막으로 () , 당신은 당신이 원하는 모든 것을 전달할 수 있습니다. 당신의 jQuery 플러그인을 만들 때 예를 들어, 전달 jQuery 또는 $ 과 같이 :

( function ( jQ ) { … code … })( jQuery )

그래서 여기서하고있는 것은 하나의 매개 변수 ( jQ 로컬 변수 라고 하며 해당 함수 에만 알려진 함수)를 취하는 함수를 정의하는 것입니다 . 그럼 당신은있는 거 자체 호출 기능 및 매개 변수 전달 (또한 jQuery ,하지만 이 사람은 외부 세계와 실제 jQuery를 자체에 대한 참조에서이다). 이 작업을 수행 할 필요는 없지만 몇 가지 장점이 있습니다.

전역 매개 변수를 재정의하고 로컬 범위에 적합한 이름을 지정할 수 있습니다.

스코프 체인을 전역 범위로 이동하지 않고 로컬 범위에서 검색하는 것이 더 빠르기 때문에 약간의 성능 이점이 있습니다.

압축에는 이점이 있습니다 (최소화).

이전에 이러한 함수가 시작시 자동으로 실행되는 방법에 대해 설명했지만 자동으로 실행되는 경우 누가 인수를 전달합니까? 이 기법은 필요한 모든 매개 변수가 이미 전역 변수로 정의되어 있다고 가정합니다. 따라서 jQuery가 전역 변수로 아직 정의되지 않은 경우이 예제는 작동하지 않습니다. 짐작할 수 있듯이 jquery.js가 초기화하는 동안 수행하는 한 가지 작업은 ‘jQuery’전역 변수와 더 유명한 ‘$’전역 변수를 정의하는 것입니다.이 변수는 jQuery가 포함 된 후이 코드가 작동하도록합니다.

javascript 익명 함수 이해

( function (){

// jQuery

})();

( function (){ // jQuery })();

이 내용에 흥미가 있습니까? 현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: 기초 정리 – 1 문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number – 숫자 데이터 / 숫자로 표… 텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오. CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.

코드는 다음과 같습니다.반년 전에 jQuery를 처음 만났을 때, 나도 다른 사람들처럼 원본이 어떤 것인지 흥분해서 보고 싶었다.그러나 원본 코드를 처음 봤을 때 나는 어리둥절했다.왜 익명 함수 하나만 실행을 보지 못했습니까? (당연히 실행했지…) jQuery 같은 함수 라이브러리가 있을 수 있습니까?그래서 나는 의문을 품고 CSDN에 왔다.결과적으로 지금 많은 사람들이 잘 알고 있을 거라고 믿는다.익명 함수가 묶인 다음에 괄호를 넣으면 이 익명 함수는 즉시 실행될 수 있습니다.정말 신기하다!헤헤!소란은 여기까지.이 절에서 우리가 만났던 jQuery 세션은 바로 실행되는 익명 함수입니다.이런 용법은 논단에서도 격론을 불러일으켰다. 이 코드는 도대체 클로즈업에 속하는 것입니까?이 의문을 가지고 우리는 기초부터 시작하여 모든 관건적인 요소를 분석하고 자신만의 답안을 찾는다.(맞아, 내 대답! 내가 보기에 모든 이론은 형식일 뿐이다. 우리의 응용 실현에 유리하기만 하면 취할 수 있는 것이다. 검은 고양이, 흰 고양이, 쥐를 잡는 것은 좋은 고양이다!)익명 함수를 말하자면, 우리는 우선 함수 자체부터 말해야 한다.함수의 정의는 다음과 같다. 함수는 모든 입력에 유일한 출력 값을 부여하는’법칙’이다.물론 이것은 수학상의 정의일 뿐이다.그러나 컴퓨터 프로그래밍 언어에서 함수의 정의도 십중팔구이다.컴퓨터의 함수도 수학 정의의 설명과 유사하다는 것을 우리는 알고 있다. 입력한 몇몇 데이터를 코드가 설정한 논리적 조작 처리를 거쳐 유일한 출력의 코드 조합 블록으로 되돌려주는 것이다.물론 입력한 데이터가 비어 있거나 출력된 데이터가 비어 있거나 둘 다 비어 있다.다음은 익명 함수와 관련된 개념을 초보적으로 알아보자.함수 성명 (function 문장) 은 함수를 사용하려면 먼저 그 존재를 성명해야 한다.그러나 우리가 가장 자주 사용하는 방식은 바로 function 문장을 사용하여 하나의 함수를 정의하는 것이다. 예를 들어 코드는 다음과 같다. function abc() {//code to process} function abc() {//code to process} 물론 당신의 함수도 파라미터를 가지고 있을 수 있고 심지어 되돌아오는 값을 가지고 있을 수 있다.view plaincopy to clipboardprint? function abc(x,y){ return x+y; } function abc(x,y){ return x+y; }그러나 JS 해석기는 함수를 어떻게 정의하든지 Function 대상으로 번역합니다.예를 들어 위의 예에서 함수 번호를 정의하고 다음과 같은 코드를 입력하십시오:alert (typeof abc);//”function”브라우저에서 abc가 Function 대상이라는 알림 상자를 팝업합니다.그렇다면 펀션 대상은 과연 무엇일까?Function 객체 Function 객체는 JavaScript 내의 고유한 객체이며 모든 함수는 사실상 하나의 Function 객체입니다.이 방면의 토론에 관해서 우리는 다음 주제절로 남겨 두었다.우선 Function 대상이 구조 함수를 직접 활용하여 새로운 함수를 만들 수 있는지 살펴보자.답은 긍정적이다.예를 들어, 코드는 다음과 같습니다. var abc = new Function(“x”, “y”, “return x*y;”).alert(abc(2,3));//”6″var abc = new Function(“x”,”y”,”return x*y;”); alert(abc(2,3));//”6″여러분들은 이제 함수를 어떻게 성명하는지에 대해 어느 정도 알고 계실 거라고 믿습니다.그럼 뭐가 익명 함수인가요?성명 익명 함수는 말 그대로 익명 함수는 실제 이름이 없는 함수다.예를 들어 우리는 위의 예에서 함수의 이름을 빼고 그가 함수인지 아닌지를 판단한다. 코드는 다음과 같다:alert(typeoffunction(){});//”function”alert(typeof function(x,y){return x+y;});//”function”alert(typeof new Function(“x”,”y”,”return x*y;”))//”function”alert(typeof function(){});//”function”alert(typeof function(x,y){return x+y;});//”function”alert(typeof new Function(“x”,”y”,”return x*y;”))//”function”우리는 그것들이 모두 Function 대상이라는 것을 쉽게 볼 수 있다. 다시 말하면, 그들은 모두 함수이지만, 그들은 모두 이름이 없다는 특징을 가지고 있다.그래서 우리는 그들을 ‘익명 함수’ 라고 부른다.그러나 그들이 이름이 없기 때문에 우리도 그들을 찾을 방법이 없다.이것은 어떻게 익명 함수를 호출하는지에 대한 문제를 설명한다.익명 함수의 호출은 함수를 호출하려면, 함수를 지정하고 인용할 수 있는 방법이 있어야 한다.그래서 우리는 그것을 도와 이름을 찾아야 한다.예를 들어 코드는 다음과 같습니다: var abc=function (x, y) {return x + y;alert(abc(2,3));//”5″var abc=function(x,y){ return x+y; } alert(abc(2,3));//”5″위의 조작은 사실 다른 방식으로 함수를 정의하는 것과 같다. 이런 용법은 우리가 비교적 자주 만나는 것이다.예를 들어 DOM 요소 이벤트 처리 함수를 설정할 때, 우리는 보통 그들에게 이름을 정하지 않고, 그에 대응하는 이벤트에 익명 함수를 인용한다.익명 함수에 대한 호출은 우리가 본 jQuery 세션 () 을 사용하여 익명 함수를 묶은 다음, 그 다음에 작은 괄호 (파라미터 목록 포함) 를 추가하는 방법도 있다.다음 예를 다시 봅시다. 코드는 다음과 같습니다:alert ((function (x, y) {return x + y;)(2,3));//”5″alert((new Function(“x”,”y”,”return x*y;”))(2,3));//”6″alert((function(x,y){return x+y;})(2,3));//”5″alert((new Function(“x”,”y”,”return x*y;”))(2,3));//”6″많은 사람들이 이상할지도 모르지만, 왜 이런 방법이 성공적으로 사용될 수 있을까?이 앱이 이상하다고 생각하는 사람은 아래의 설명을 보세요.소괄호의 역할을 아시나요?작은 괄호는 우리의 표현식을 조합하여 블록을 나눌 수 있고, 각 블록, 즉 한 쌍의 작은 괄호마다 되돌아오는 값이 있다.이 반환값은 사실상 소괄호에서 표현식의 반환값이다.그래서 우리가 한 쌍의 작은 괄호로 익명 함수를 묶을 때 실제로는 작은 괄호가 되돌아오는 것이 바로 익명 함수의Function 대상이다.따라서 소괄호 쌍에 익명 함수를 더하면 이름이 있는 함수처럼 인용 위치를 얻을 수 있다.그래서 이 인용 변수 뒤에 매개 변수 목록을 더하면 일반 함수의 호출 형식을 실현할 수 있다.이상의 글로 여러분들이 알아볼 수 있을지 모르겠습니다. 만약 이해가 안 된다면 아래의 코드를 다시 한 번 보십시오.코드는 다음과 같습니다: var abc=function(x, y) {return x+y;};//익명 함수 대상을 abc//abc에 부여한 constructor는 익명 함수의 constructor와 같다.즉, 두 함수의 실현은 같다.alert((abc).constructor==(function(x,y){return x+y;}).constructor); var abc=function(x,y){return x+y;};//익명 함수 대상을 abc//abc에 부여한 constructor는 익명 함수의 constructor와 같다.즉, 두 함수의 실현은 같다.alert((abc).constructor==(function(x,y){return x+y;}).constructor);PS:constructor는 객체를 작성하는 함수입니다.즉 함수 대상이 대표하는 함수체다.한 마디로 하면, 이를 괄호에 포함된 익명 함수) 괄호 표현식이 되돌아오는 함수 대상으로 이해하고, 이 함수 대상을 정상적인 매개 변수 목록으로 호출할 수 있다.(앞에서 오류가 발생했습니다. 함수 표현식만 함수를 직접 호출할 수 없습니다. 익명 함수 괄호를 제거하려면 표현식에 값을 부여해야 합니다. 즉 (function () {alert (1)} () () 는 a=function () {alert (1)} () 와 같은 값이어야 하며 a=도 제거할 수 없습니다.)클로즈업, 클로즈업이 뭐예요?패킷 폐쇄란 특정한 프로그램 언어의 코드 블록이 1급 함수를 허용하고 1급 함수에 정의된 자유 변수가 방출되지 않으며 1급 함수가 방출되기 전까지 1급 함수 외에도 방출되지 않은 자유 변수를 적용할 수 있다는 것을 말한다.어때요?보아하니 땀이 나겠지… 괜찮아, 나도.더 간단한 방법으로 설명하자면 클립은 사실 언어 특성이다. 이것은 프로그램 설계 언어에서 함수를 대상으로 간주하고 대상에서의 조작을 함수에 옮겨서 실례(국부) 변수를 정의할 수 있는 것을 말한다. 이런 변수는 함수에 함수의 실례 대상이 소각될 때까지 저장할 수 있다.다른 코드 블록은 어떤 방식으로 이 실례 (국부) 변수의 값을 가져와 응용 확장을 할 수 있다.이렇게 재해석한 후에 더욱 뚜렷해질지 모르겠습니다. 만약 아직도 이해하지 못한다면, 클립은 프로그램 언어에서 코드가 실행된 함수에서 정의한 국부 변수를 호출할 수 있도록 하는 것을 말합니다.지금 우리는 하나의 예를 볼 수 있다. 코드는 다음과 같다. var abc=function (y) {var x=y;//이것은 국부 변수 Return function () {alert (x++);//이것은 패키지 특성 중의 일급 함수 국부 변수의 x를 호출하고 그것을alert (y–) 조작하는 것이다./인용된 매개 변수 변수도 자유 변수} (5);//abc 초기화();//”5″”5″abc();//”6″”4″abc();//”7″”3″alert(x);//오보!”x”가 정의되지 않았습니다!var abc=function (y) {var x=y;//이것은 국부 변수 return function () {alert(x++);//이것은 패키지 특성 중의 1급 함수 국부 변수의 x를 호출하여 그것을alert(y–)로 조작하는 것이다.//인용된 매개 변수 변수도 자유 변수}} (5);//abc 초기화();//”5″”5″abc();//”6″”4″abc();//”7″”3″alert(x);//오보!”x”가 정의되지 않았습니다!여기를 보면 도대체 jQuery의 코드 세션이 닫혔는지 판단할 수 있습니까?내 이해로는패킷 기능이 적용되었는지 여부는 이 단락 코드에 가장 중요한 요소가 있는지 확인해야 한다. 즉, 소각되지 않은 국부 변수이다.어떤 실현된 익명 함수도 패키지 기능을 적용할 수 없다는 것은 명백하다.그런데 익명 함수에 실현이 있다면?그것도 그것의 실현에 소각되지 않은 국부 변수가 사용되었는지 확인해야 한다.그래서 만약에 그 개편 중의 jQuery 코드 세션이 JS의 어떤 특성을 응용했는지 물어보면?그러면 그것은 단지 익명 함수와 익명 함수의 호출일 뿐이다.그러나 클로즈업의 특성을 내포하고 수시로 클로즈업 응용을 실현할 수 있다.

자바 스크립트 익명 함수 | 혼공 자바스크립트 32강 – 선언적 함수와 익명 함수의 차이, 확인 문제 상위 247개 답변

We are using cookies to give you the best experience on our website.

You can find out more about which cookies we are using or switch them off in settings.

[JavaScript] 익명함수와 기명함수, 언제 써야할까?

익명함수와 기명함수 언제 써야할까?

📌 익명함수와 기명함수

Javascript 에서 함수를 정의할 때 함수의 이름을 지정하지 않는 익명함수 와

그 반대인 기명함수 방식으로 정의를 할 수 있습니다.

function getUserName() { /** 기명함수 */ } const getUserName = function() { /** 익명함수 */ }

위 예시코드에서 기명함수 는 함수 선언문 이고 익명함수 는 함수 표현식 방식입니다.

📌 이 둘의 차이점은?

위 선언 방식은 각 함수가 호출되는 시점 에 차이가 발생합니다.

간단한 예시를 통해 각 함수들의 호출 방식을 살펴보겠습니다.

익명함수와 호이스팅

func(); // TypeError: func is not a function var func = function() { console.log(“익명함수”); };

익명함수는 호이스팅에 영향을 받지 않는다 는 특징을 가지고 있습니다.

실제로 func 가 호이스팅이 되지 않는 것은 아닙니다.

다만 undefined 로 초기화되어있기 때문에

함수 선언 이전에 예상치 못하게 호출이 되는 것을 방지할 수 있습니다.

기명함수와 호이스팅

func() // 기명함수 function func() { console.log(“기명함수”) }

반면 기명함수 는 호이스팅에 영향을 받아 함수 선언부가 끌어올려져서

실제 함수 선언 위치보다 이전에 함수를 호출해도 문제가 발생하지 않습니다.

이는 함수 선언 및 호출방식에서 유연성을 부여해줄 수도 있지만

의도하지 않은 함수 호출을 허용할수도 있습니다.

📌 그렇다면 언제 무엇을 써야할까?

그렇다면 위 두 함수 선언 방식은 언제 사용하는 것이 좋을까요?

사용하는 사람마다 의견이 다를 수 있지만 저는 함수 재사용성 과 기능 에 초점을 두고 정의합니다.

만약 해당 함수가 재사용될 가능성이 있거나 분명한 목적으로 정의될 필요가 있는 함수라면

함수 선언문 을 이용해서 기명 함수 로 정의합니다.

반대로 재사용될 필요가 없는 함수들의 경우에는 익명 함수 를 사용하는 것입니다.

이 경우 IIFE (즉시 실행 함수) 나 콜백 함수 , 혹은 클로저 생성 을 위한 목적으로 사용합니다.

참고자료

[JavaScript] 함수선언식(Function Declaration)과 함수표현식(Function Expression)

javascript 함수와 호이스팅

Anonymous Functions vs Named Functions vs Arrow Functions

익명 함수(Anonymous Function)에 대하여

반응형

키워드에 대한 정보 자바 스크립트 익명 함수

다음은 Bing에서 자바 스크립트 익명 함수 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 8-1. 자바스크립트 함수(선언함수 vs 익명함수)

  • 동영상
  • 공유
  • 카메라폰
  • 동영상폰
  • 무료
  • 올리기

8-1. #자바스크립트 # #함수(선언함수 #vs #익명함수)


YouTube에서 자바 스크립트 익명 함수 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 8-1. 자바스크립트 함수(선언함수 vs 익명함수) | 자바 스크립트 익명 함수, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  자 오묘 유 | 자오묘유 사주 특징 - 박창원 선생님 [대통인.Com] 모든 답변

Leave a Reply

Your email address will not be published. Required fields are marked *