Javascript의 IIFE는 무엇입니까?
7442 단어 iifejavascripthtmlplugins
다른 약어?
우리는 두문자어를 좋아합니다. 그렇지 않나요? KISS, DRY, TDD, LOL... 너무 많은 개념 뒤에 기억해야 할 것이 너무 많습니다. 그렇다면 Javascript에서 IIFE는 무엇입니까?
IIFE는 즉시 호출된 함수 표현식을 나타냅니다. 익명 함수를 만들고 괄호를 사용하여 즉시 호출합니다.
아래는 약 4000BC로 거슬러 올라가는 아름다운 함수 표현입니다. 저자: 익명
여기서는 변수에 익명 함수를 저장합니다. 나중에 해당 괄호를 추가하여 해당 함수를 호출합니다.
const myFunction = function () {
console.log("A function has no name.");
};
//Calling the function
myFunction();
// A function has no name
IIFE는 익명 함수와 호출 단계를 결합합니다.
(function () {
console.log("This is IIFE.");
})();
여기서 무슨 일이 일어나고 있습니까? 3가지:
const myFunction = function () {
console.log("A function has no name.");
};
//Calling the function
myFunction();
// A function has no name
(function () {
console.log("This is IIFE.");
})();
축하합니다. IIFE가 무엇으로 구성되어 있는지 이해했습니다! 이제 질문을 하게 됩니다. 도대체 왜 그런 것 중 하나를 사용하고 싶습니까?
IIFE의 이유
IIFE를 사용하려는 주된 이유는 전역 범위를 오염시키지 않고 함수 내부에서 선택한 내용을 비공개로 유지하기 위해서입니다.
둘러싸는 괄호 때문에 IIFE는 외부에서 접근할 수 없는 자체 범위를 갖는다. IIFE에서 반환하는 항목은 IIFE 외부에서 액세스할 수 있는 유일한 항목입니다.
(function () {
let sayMyName = "Damien";
})();
console.log(iife.sayMyName); // sayMyName is not defined
이러한 변수에 액세스할 수 있도록 하려면 해당 IIFE에서 변수를 반환해야 합니다.
const iife = (function () {
let sayMyName = "Damien";
let privateVariable = "No trespassing!";
let greeting = function () {
console.log("Hello from the IIFE");
};
return {
sayMyName,
greeting,
};
})();
console.log(iife.sayMyName); // Damien
iife.greeting(); // Hello from the IIFE
console.log(iife.privateVariable); // privateVariable is not defined
플러그인 방식
IIFE는 Javascript 플러그인을 작성할 때 매우 인기가 있습니다. 이를 통해 사용자는 수천 개의 변수에 의해 전역 범위가 침범되지 않고 여러 플러그인의 기능을 사용할 수 있습니다. IIFE는 작동에 필요한 것, 일반적으로 단 하나의 변수로 전역 범위를 채웁니다.
간단한 캘린더 플러그인을 작성한 this article 에서 예제를 찾을 수 있습니다.
기본적으로 플러그인은 다음과 같이 보일 수 있습니다. 조금 더 복잡하지만 여전히 IIFE입니다.
(function (globalScope, whatWePopulateTheGlobalScopeWith) {
globalScope.myCoolPlugin = whatWePopulateTheGlobalScopeWith();
})(this, function () {
let launchThePlugin = () => {
document.title = "PLUGIN LAUNCHED";
};
return {
launchThePlugin,
};
});
좀 더 기술적으로 분석해 보겠습니다.
여전히 IIFE 스켈레톤이 있음을 주목하십시오. 괄호로 둘러싸이고 즉시 호출되는 함수 선언. 여러분을 당황하게 만드는 것은 함수 표현식을 호출할 때 매개변수를 제공한다는 것입니다. 첫 번째 매개변수는 전역 범위인 this입니다.
제 경우에는 플러그인이 브라우저에서 실행되기 때문에 window 개체의 전역 범위입니다. 그러나 그것은 무엇이든 될 수 있습니다. 두 번째 매개변수는 함수입니다.
IIFE의 본체에서 우리는 두 번째 매개변수에 제공된 함수가 반환할 모든 것을 globalScope에 채웁니다. 여기서는 launchThePlugin이라는 함수를 반환합니다. 즉, 이 IIFE가 실행되면 window.myCoolPlugin은 함수가 반환한 개체와 동일합니다.
IIFE의 본체는 전역 범위를 채우고 다른 기능은 플러그인의 기능을 관리합니다. 따라서 HTML에서 Javascript 파일을 가져올 때 myCoolPlugin.launchThePlugin()(또는 window.myCoolPlugin.launchThePlugin())을 실행할 수 있습니다. 이 기능은 문서의 제목을 업데이트합니다.
그 함수에 많은 것을 추가할 수 있지만, 반환하지 않는 한 이 함수 외부에서 액세스할 수 없습니다.
이것이 바로 IIFE의 힘, 유용성, 굉장함입니다.
그것이 분명했으면 좋겠다! 그렇지 않다면 알려주세요! ❤️
Reference
이 문제에 관하여(Javascript의 IIFE는 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/damcosset/iife-588a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(function () {
let sayMyName = "Damien";
})();
console.log(iife.sayMyName); // sayMyName is not defined
const iife = (function () {
let sayMyName = "Damien";
let privateVariable = "No trespassing!";
let greeting = function () {
console.log("Hello from the IIFE");
};
return {
sayMyName,
greeting,
};
})();
console.log(iife.sayMyName); // Damien
iife.greeting(); // Hello from the IIFE
console.log(iife.privateVariable); // privateVariable is not defined
(function (globalScope, whatWePopulateTheGlobalScopeWith) {
globalScope.myCoolPlugin = whatWePopulateTheGlobalScopeWith();
})(this, function () {
let launchThePlugin = () => {
document.title = "PLUGIN LAUNCHED";
};
return {
launchThePlugin,
};
});
Reference
이 문제에 관하여(Javascript의 IIFE는 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/damcosset/iife-588a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)