首页 > 其他分享 >IIFE(立即执行函数表达式)

IIFE(立即执行函数表达式)

时间:2024-02-06 11:46:16浏览次数:23  
标签:function 函数 作用域 IIFE 执行 表达式

IIFE

IIFE(立即执行函数表达式)是一种在定义时立即执行的 JavaScript 函数。这种函数形式非常有用,特别是当需要创建一个新的作用域以避免污染全局作用域或需要执行一段代码但不希望这段代码之后再被引用或重用。

(function() {
  // 函数体
})();

/*或者箭头函数*/
(() => {
  // 函数体
})();

解释

函数表达式:IIFE 是一个函数表达式而不是函数声明。区别在于函数表达式可以赋值给变量,可以作为参数传递给其他函数,而函数声明则是一个独立的语句,以 function 关键字开头,并有一个函数名称。
立即执行:函数定义后立即执行。通过在函数表达式后面添加一对圆括号 () 实现,这对括号使 JavaScript 引擎执行这个函数。
创建作用域:IIFE 创建了一个新的作用域。作用域内部声明的变量外部不可见,避免全局作用域的污染。
参数传递:可以向 IIFE 传递参数。将外部变量传入 IIFE 的作用域,同时还保持了外部作用域的变量不被修改

(function(x) {
  console.log(x); // 输出: 10
})(10);

使用场景

避免变量污染:当代码片段不应该干扰到其他部分的执行或变量时,IIFE可以很好地隔离这些代码。
模块化编程:在 ES6 的模块导入之前,IIFE 是创建模块的一种方式,可以将公共接口暴露给外部,而将模块内部的实现细节隐藏起来。

例如: for循环便利节点数据,根据数据创建的节点需要添加click事件,同时事件需要使用迭代节点的数据.如果直接在for里面写addEventListener('click', function () {}),匿名函数里面获取的是节点的最终值并非节点的迭代值.

临时代码执行:当你需要执行一些只需运行一次的初始化代码时,IIFE 是一个很好的选择。

标签:function,函数,作用域,IIFE,执行,表达式
From: https://www.cnblogs.com/aeolian/p/18009444

相关文章

  • JavaScript的正则表达式
    目录一、概念二、修饰符1.g(global,全局)2.i(ignorecase,不区分大小写)3.m(multi-line,多行)4.s(single-line,单行)5.u(Unicode,Unicode字符)6.y(sticky,粘性)三、元字符1..(匹配非换行符\n的任意一个字符)2.\d(匹配数字)3.\D(匹配除数字以外的所有字符)......
  • JavaScript函数柯里化
    目录概念函数柯里化的实现函数柯里化简写函数柯里化使用案例函数柯里化工厂函数概念函数柯里化就是给一个函数传入一部分参数,此时就会返回一个函数来接收剩余的参数。使用场景:递归使用和处理函数,函数功能尽可能单一。函数柯里化的实现//没有柯里化的实现function......
  • 惰性函数(函数重写)
    目录惰性函数的定义没有使用惰性函数的写法使用惰性函数的一般写法惰性函数的高阶函数写法惰性函数的定义惰性函数表示函数执行的分支只会在函数第一次调用的时候执行,在第一次调用过程中,该函数会被覆盖为另一个按照合适方式执行的函数,这样任何对原函数的调用就不用再经过执行的......
  • 正则表达式密码验证
    正则表达式密码验证一、基础正则表达式1.1至少1个大写字母(?=.*?[A-Z])1.2至少1个小写英文字母(?=.*?[a-z])1.2至少1位数字(?=.*?[0-9])1.2至少有1个特殊字符(?=.?[#?!@$%^&-])1.3最小8个长度二、常见密码正则表达式2.1至少8-16个字符,至少1个大写字......
  • 在 ​​numpy​​​ 中,​​isnan()​​​ 是用来检测数值是否为 ​​NaN​​​ 的函数
    在numpy中,isnan()是用来检测数值是否为NaN的函数¹。除了isnan(),numpy还提供了其他一些函数来处理特殊的数值,例如isinf()用来检测数值是否为无穷大,isfinite()用来检测数值是否为有限数⁶。然而,如果你想要检测的不仅仅是NaN,还包括其他类型的缺失值,例如None或者空字符串......
  • strtol() 函数
    功能概述:字符串转换为数值。其声明 位于头文件<stdlib.h>C库函数 longintstrtol(constchar*str,char**endptr,intbase) 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为longint型),base必须介于2和36(包含)之间,或者是特殊值0。参数str--......
  • Fork - 进程管理中一个重要的函数
    思考问题:当首次调用新创建进程时,其入口在哪里?系统调用fork函数是如何创建进程的?系统调用exec系列函数是如何更换进程的可执行代码的?1.1进程是如何创建的?在Linux系统启动时,最早通过init_task产生的进程是idle进程,也称为swapper进程,其pid为0。该进程会调用......
  • (11/60)有效的括号、删除字符串中所有相邻重复项、逆波兰表达式求值
    有效的括号leetcode:20.有效的括号实现思路遍历到左括号,入栈对应的右括号(方便遍历到右括号时进行对比);遍历到右括号,对比栈顶元素。把无效三种情况照顾到:1.左括号多了(遍历结束后栈不为空);2.左右括号不匹配(右括号时栈顶元素与当前元素对比);3.右括号多了(右括号时栈是空的)。复......
  • 无涯教程-LOG10E函数
    E的以10为底的对数,约为0.434。LOG10E-语法Math.LOG10ELOG10E-示例console.log(Math.LOG10E)//thebase10logarithmofMath.E:0.434运行上面代码输出0.4342944819032518参考链接https://www.learnfk.com/es6/es6-math-property-log10e......
  • GPT 中的函数调用(function call)是什么?
    在OpenAIChatGPTAPI和GoogleGeminiAPI中我们可以看到函数调用的功能。这个功能是做什么用的?下面大概讲解。以GoogleGeminiAPI函数调用一节中的内容为例,该章节举了一个例子:大语言模型(LLMs)往往无法进行准确的数学运算。比如说,给Gemini两个数\(a\)和\(b\),让它计......