首页 > 其他分享 >立即执行函数表达式(Immediately Invoked Function Expression, IIFE)的学习

立即执行函数表达式(Immediately Invoked Function Expression, IIFE)的学习

时间:2024-10-28 10:32:24浏览次数:3  
标签:Function Invoked 函数 示例 IIFE let 变量 globalMessage

一、立即执行函数表达式(Immediately Invoked Function Expression, IIFE)。这种模式在JavaScript中常用于创建一个独立的作用域,以避免变量污染全局命名空间。

常见的例子可以分解如下:

(function (window) {
    // 这里可以写任何需要执行的代码
})(window);

在这个例子中,function (window) { ... } 是一个匿名函数,它接受一个名为 window 的参数。当这个函数定义完成后,紧接着就是 (...)(window); 部分,这表示立即执行这个刚刚定义的匿名函数,并且将全局对象 window 作为参数传递给它。

这样的做法有几个好处:

  1. 作用域隔离:函数内部定义的所有变量都只存在于这个函数的作用域内,不会影响到外部的环境。
  2. 防止污染全局命名空间:通过这种方式,可以确保函数内部的变量不会与外部其他脚本中的变量发生冲突。
  3. 模块化编程:IIFE 是实现模块化编程的一种方式,可以帮助开发者更好地组织和管理代码。

二、在立即执行函数表达式(IIFE)中使用箭头函数也非常简单。箭头函数是 ES6 引入的一种新的函数定义方式,语法更加简洁。以下是一些示例,展示了如何在 IIFE 中使用箭头函数。

基本示例

(() => {
    let message = "Hello, World!";
    console.log(message); // 输出: Hello, World!
})();

在这个示例中,我们使用了箭头函数定义了一个 IIFE,并在其中声明了一个变量 message

使用传入的参数

你也可以通过参数将外部的值传递给 IIFE:

const globalMessage = "Global Message";

((localMessage) => {
    let message = localMessage;
    console.log(message); // 输出: Global Message
})(globalMessage);

在这个示例中,globalMessage 是一个全局变量,通过参数传递给 IIFE,然后在 IIFE 内部使用。

修改外部变量

如果你希望在 IIFE 内部修改外部变量,可以通过引用传递来实现:

let globalMessage = "Global Message";

(() => {
    globalMessage = "Modified Global Message";
    console.log(globalMessage); // 输出: Modified Global Message
})();

console.log(globalMessage); // 输出: Modified Global Message

在这个示例中,IIFE 内部直接修改了全局变量 globalMessage

使用多个变量

你可以在 IIFE 中声明和使用多个变量:

(() => {
    let name = "Alice";
    let age = 30;
    let city = "New York";

    console.log(`Name: ${name}, Age: ${age}, City: ${city}`);
    // 输出: Name: Alice, Age: 30, City: New York
})();

返回值

IIFE 也可以返回值,这些返回值可以被捕获并用于后续的处理:

const result = (() => {
    let a = 5;
    let b = 10;
    return a + b;
})();

console.log(result); // 输出: 15

在这个示例中,IIFE 计算了两个变量的和,并返回结果。返回的结果被赋值给 result 变量。

多个参数

如果你需要传递多个参数,可以这样做:

const name = "Alice";
const age = 30;

((n, a) => {
    console.log(`Name: ${n}, Age: ${a}`);
})(name, age);

在这个示例中,IIFE 接受两个参数 na,并输出它们的值。

总结

使用箭头函数定义 IIFE 可以使代码更加简洁和现代。你可以根据需要在 IIFE 中声明和使用变量,甚至通过参数传递外部值或返回值。希望这些示例能帮助你更好地理解和使用 IIFE。如果有更多问题,欢迎大家留言!

标签:Function,Invoked,函数,示例,IIFE,let,变量,globalMessage
From: https://www.cnblogs.com/wyl-1113/p/18509857

相关文章

  • sfunction
    /**Copyright(c)2011-2022,baomidou([email protected]).**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexceptincompliancewiththeLicense.*YoumayobtainacopyoftheLicenseat**http:......
  • Python's exec Functions: Execute Dynamically Generated Code
      #encoding:utf-8#版權所有2024©塗聚文有限公司#許可資訊查看:言語成了邀功的功臣,還需要行爲每日來值班嗎?#描述:主、子表單窗體傳值Parent-childformoperations#Author:geovindu,GeovinDu塗聚文.#IDE:PyCharm2023.1python3.11#OS......
  • 【Azure Function】Python Function部署到Azure后报错No module named '_cffi_backend
    问题描述本地使用Python编写的FunctionApp,发布到AzureFunction后,出现 _cffi_backendmodule无法找到的报错。ERROR:Error:Nomodulenamed'_cffi_backend',Cannotfindmodule.Pleasechecktherequirements.txtfileforthemissingmodule.Formoreinfo,plea......
  • C++可调用对象与function
    目录C++语言中可调用的对象不同类型可能具有相同的调用形式标准库function类型重载的函数与functionC++语言中可调用的对象函数函数指针lambda表达式bind创建的对象重载了函数调用运算符的类和其他对象一样,可调用的对象也有类型。例如,每个lambda有它自己唯一的(未命名)类类......
  • 异步函数 async function
    ◼async关键字用于声明一个异步函数:async是asynchronous单词的缩写,异步、非同步;sync是synchronous单词的缩写,同步、同时;◼async异步函数可以有很多中写法asyncfunctionfoo(){}constfoo1=asyncfunction(){}constfoo2=async()=>{}classPerson{asyncfoo......
  • [Javascript] Write memoize function
    classMemoizeMap{constructor(){this._map=newMap();this._weakMap=newWeakMap();}_isObject(v){returntypeofv==="object"&&v!==null;}set(key,value){if(this._isObject(key)){this._......
  • qwen2.5 ollama推理;openai function call调用中文离线agents使用
    ollama部署qwen2.5:3b0.3.11版本agents使用https://qwen.readthedocs.io/en/latest/framework/function_call.htmlfromopenaiimportOpenAIimportjsondefsend_messages(messages):response=client.chat.completions.create(model="qwen2.5:3b......
  • sql-function
    在SQLite中,除了LENGTH函数,还有许多其他内置函数,分类如下:字符串函数UPPER(string):将字符串转换为大写。LOWER(string):将字符串转换为小写。SUBSTR(string,start,length):返回从指定位置开始的子字符串。TRIM(string):删除字符串两端的空白字符。REPLACE(string,old......
  • 【题解】【记忆化递归】——Function
    【题解】【记忆化递归】——FunctionFunction题目描述输入格式输出格式输入输出样例输入#1输出#1提示数据规模与约定1.思路解析2.AC代码Function通往洛谷的传送门题目描述对于一个递归函数w......
  • [20241016]Oracle C functions annotations补充.txt
    [20241016]OracleCfunctionsannotations补充.txt--//网站orafun.info可以查询oraclecfunctions.CreatedbyFritsHooglandwithalittlehelpfromKamilStawiarski.--//可以通过它了解oracle内部C函数.实际上可以直接下载相关文件,在本地使用.https://gitlab.com/Frits......