생활에 대해 의심이 있습니까?
무엇이 생활입니까?
알파벳 줄임말은 바로 호출되는 함수 표현식을 대표하며 발음은 단어'iffy'와 같다.보스턴의 한 인터넷 개발자가 더 정확한 이름인 iLife를 지어주었다.IIFE는 선언 즉시 호출되는 익명 함수입니다.이 두 조의 괄호는 우리 생명의 모든 마력을 주었다.첫 번째는 Grouping Operator 괄호로 함수를 묶고 국부 범위를 제한할 수 있습니다.두 번째 조의 신기한 괄호는 함수 끝의 괄호로 함수를 호출한다.
그것들은 어떻게 썼는가:
(function () {
//code here
})();
그것을 잠가라
iLife가 제공하는 매우 멋진 장점은 하나의 큰 기능 범위 내에서 전체 응용 프로그램이나 프로그램을 잠그는 기회를 제공하여 많은 범위 정의 문제를 없앨 수 있다는 것이다.우리는 모든 변수와 함수를 우리가 즉시 호출하는 함수 표현식의 한 범위 안에 봉인할 수 있다.다른 함수에서 사용하고자 하는 변수를 전역적으로 정의할 필요가 없습니다!모든 다른 함수와 마찬가지로 iLife는 우리를 위해 국부 범위를 만들었기 때문에 그 안의 모든 것이 잠겨 있다.
(function () {
const thiss = "this "
const that = "that"
function thisThat()
{
console.log(thiss + that)
}
thisThat()
})()
// 'this that'
// undefined
위 코드에서 나는 IIFE 함수를 만들고 이 함수에 두 개의 변수인'this와 that'을 만들었다.그리고 나는 내 생활 속에서 또 다른 함수인thisThat을 만들었다.이 함수는 콘솔에 This that의 최종 결과를 표시하기 위해 두 변수를 추가합니다.Aside: "this" is one of JavaScript's reserved words and therefore cannot be used as a variable name.
변수라면?!
생활은 일종의 기능이지 않습니까?모든 함수는 변수로 저장할 수 있는데, 왜 즉시 변수를 호출하지 않습니까?그러나 IIFE를 변수로 저장할 때 관건적인 차이점은 IIFE 함수를 변수에 분배할 때 함수의 반환값을 저장하고 일반 함수를 변수에 분배할 때 함수 정의를 저장하는 것이다.
이러한 상황은 함수가 즉시 호출되기 때문에 IIFE를 저장하는 것과 정의된 함수를 저장하고 호출된 후에 이 함수의 반환값을 저장하는 것이 같다.여기에는 그것이 어떻게 일을 하는지 설명하는 매우 간단한 예가 있다.
일반 기능:
let twoTimesTwo =
function multiply() {
return 2 * 2
}
// ƒ multiply() {
// return 2 * 2
// }
생명:let twoTimesTwo =
(function () {
return 2 * 2
})()
// 4
생명과 파라미터
iLife의 매개 변수는 매우 멋지고 훌륭합니다!당신의 생활에 파라미터를 추가하는 것도 매우 쉽다.단어 function 뒤에 있는 괄호에 몇 개의 변수 이름을 삽입하고 함수를 호출하는 마지막 괄호에 변수를 정의하는 것입니다.그리고 함수 중의 변수에 대해 네가 하고 싶은 일을 할 수 있다.다음은 아주 간단한 예다.
(function (some, odd, variable) {
return some + odd + variable
})("A ", "random ", "sentence.")
// "A random sentence."
Aside: All functions (so IIFE's included!) can accept a seemingly endless amount of parameters. Here's a funny little function that illustrates my discovery. The IIFE below accepts 26 parameters!
(function (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) {
return (a * (b + c) / (d + e) - g) + ((h + i) * (j % k) / l) - (m * n) + ((o % p) * (q + r)) / s * t + ((u + v) % (w * x) - (y + z))
})(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
// 370.35380116959067
결론
지금까지 코드를 작성하는 과정에서 용어 자체가 새로운 인코딩 개념을 배우는 데 가장 두려운 부분 중 하나일 수 있다는 것을 알게 되었다.그러나 나도 그중의 상당히 많은 용어가 복잡하게 들리고 그 배후의 개념도 간단하다는 것을 발견했다.즉각 호출되는 함수 표현식은 내가 이 용어를 처음 봤을 때 생각해 본 적이 없는 것처럼 들리지만 iLife는 매우 간단하다. (게다가 재미있다.)사용하다.iLife 함수를 사용하는 주요 이유는 사용자가 싫어하는 전역 변수나 함수의 번거로움을 없애기 때문입니다.iLife는 변수와 함수에 대한 보호 때문에 이 변수와 함수는 전역 범위의 변수와 함수를 모르기 때문에 같은 이름을 공유할 수 있습니다.iLife는 또한 조직이 미친 것처럼 보일 수 있는 JavaScript 코드를 더 쉽게 읽을 수 있도록 도와줍니다.
Reference
이 문제에 관하여(생활에 대해 의심이 있습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jcface/iffy-about-iife-s-2bbc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)