JavaScript 解释IIFEs

JavaScript 解释IIFEs

在本文中,您将了解关于JavaScript立即调用的函数表达式(IIFE)。一个 JavaScript立即调用的函数表达式 是一个被定义为表达式并在创建后立即执行的函数。以下是定义立即调用的函数表达式的语法。

语法:

(function(){
    // Function Body goes here
})();

立即执行函数(IIFEs)也可以与箭头函数一起使用,如下所示。

(() => {
    // Function Body goes here
})()

现在我们了解了什么是立即执行函数表达式(IIFE),让我们来看看一些需要使用IIFE或自执行函数的情况。

IIFE的常见用例

1. 避免全局执行上下文的污染:

立即调用的匿名函数可以用于初始化代码。设置环境所需的变量之后,不再使用这些变量,也不应该混乱命名空间。如果你了解javascript中的执行上下文,你必须意识到全局作用域的概念。存在于全局作用域中的任何变量或函数在整个程序中都可以访问。但有时我们需要确保这些变量只能在程序的特定部分中访问。

例如:假设你正在编写一个库,并且对于功能部分,你要使用易于理解并与所需上下文匹配的变量名。但在库中,你不希望强迫其他开发人员使用不同的名称,只因为你在库代码中使用某些变量名。你希望确保任何现有(或新的)代码不会意外地与其他变量、覆盖函数和方法发生冲突。确保不发生这种意外的方法是将所有的代码包装在IIFE中。这就是为什么很多库都以IIFE风格编写他们的源代码。

例子:

HTML

<script> 
  
    let firstVariable = "Hello"; 
    (() => { 
        // Some initiation code 
        let secondVariable = "Geeks"; 
    })(); 
  
    // The secondVariable will  
    // be discarded after the function is executed 
    console.log("First Variable:", firstVariable) 
    console.log("Second Variable:", secondVariable) 
</script>

输出:

First Variable: Hello
Uncaught ReferenceError: secondVariable is not defined

2. 将变量设置为私有的:

IIFEs还可以用于为可访问的函数建立私有方法,同时暴露一些属性供以后使用。

例子:

HTML

const User = (() => { 
  
    let userName = "Geek"; 
    let userSecret = "Likes using IIFE"; 
    return { 
        getName: () => userName, 
        getSecret: () => userSecret 
    } 
})(); 
  
console.log(User.getName()); // returns "Geek" 
console.log(User.getSecret()); // returns "Likes using IIFE" 
console.log(User.userName); // returns undefined

输出: 在上面的例子中,我们可以轻松地访问从函数返回的get方法,但无法访问在函数内定义的任何属性。许多JavaScript库都遵循类似的模式。

Geek
Likes using IIFE
undefined

结论: IIFE(立即执行函数表达式)在常规编码项目中可能不常见,但它是存在的,并在实际世界中有实际用途。您可能会发现自己创建的项目可能会被其他开发人员使用,并且像IIFE这样的概念肯定会派上用场。您也可能会发现一些广泛使用闭包、IIFE、函数柯里化、组合等概念的开源项目。这些概念是函数式编程和javascript的核心,因此了解这些主题肯定会对您学习JavaScript的过程有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程