IIFE理解

IIFE理解1 定义 IIFE ImmediatelyI 意为立即调用的函数表达式 也就是说 声明函数的同时立即调用这个函数 对比一下 这是不采用 IIFE 时的函数声明和函数调用 functionfoo vara 10 console log a foo 下面是 IIFE 形式的函数调用 functionfoo vara 10 console log a 函数的声明和 II

1. 定义
IIFE: Immediately Invoked Function Expression,意为立即调用的函数表达式,也就是说,声明函数的同时立即调用这个函数
对比一下,这是不采用IIFE时的函数声明和函数调用:




function foo(){ var a = 10; console.log(a); } foo();

下面是IIFE形式的函数调用:

(function foo(){ var a = 10; console.log(a); })();
(function foo(){ var a = 10; console.log(a); })();

列表2:IIFE写法二

(function foo(){ var a = 10; console.log(a); }());

 

var a = 2; (function IIFE(global){ var a = 3; console.log(a); // 3 console.log(global.a); // 2 })(window); console.log(a); // 2

 

 

function myModule(){ var someThing = "123"; var otherThing = [1,2,3]; function doSomeThing(){ console.log(someThing); } function doOtherThing(){ console.log(otherThing); } return { doSomeThing:doSomeThing, doOtherThing:doOtherThing } } var foo = myModule(); foo.doSomeThing(); foo.doOtherThing(); var foo1 = myModule(); foo1.doSomeThing(); 

 

 

var myModule = (function module(){ var someThing = "123"; var otherThing = [1,2,3]; function doSomeThing(){ console.log(someThing); } function doOtherThing(){ console.log(otherThing); } return { doSomeThing:doSomeThing, doOtherThing:doOtherThing } })(); myModule.doSomeThing(); myModule.doOtherThing(); 

 

 

6. 小结
IIFE的目的是为了隔离作用域,防止污染全局命名空间。
ES6以后也许有更好的访问控制手段(模块?类?),有待研究。




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211379.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午10:34
下一篇 2026年3月18日 下午10:34


相关推荐

  • Linux pstack命令[通俗易懂]

    Linux pstack命令[通俗易懂]概要打印运行进程的栈信息(快照),包括一个进程下的所有线程的栈信息。语法pstackpid解释pstack是封装了gdb功能的shell脚本,通过”threadapplyallbt”的命令获得输出所有的线程堆栈信息,再用sed进行替换和过滤#RunGDB,stripoutunwantednoise.$GDB–quiet$readnever-nx/proc/$1/exe$1<<EOF2>&1|

    2025年11月16日
    4
  • 基于mips内核的Atheros芯片–wlan中的VAP的创建「建议收藏」

    基于mips内核的Atheros芯片–wlan中的VAP的创建「建议收藏」重要是使用命令创建,可以通过无线网卡和手机登陆的无线网络标识。登陆名称就是ssid号。1:/etc/rc.d/rc.wlanup//这个文件主要用来加载wlan相应的驱动程序。2:配置ip地址,针对br0。ifconfigbr010.10.99.194up  3:创建基本的VAP/etc/rc.d/rc.wlanupwlanconfigath0creat

    2025年6月9日
    7
  • C++ Opencv imfill 孔洞填充函数的实现(学习笔记)[通俗易懂]

    C++ Opencv imfill 孔洞填充函数的实现(学习笔记)[通俗易懂]C++Opencvimfill孔洞填充函数的实现函数实现的中心思想二值图寻找连通域的关键种子点的确定连通域的寻找过程条件设定最后赋值话不多说直接上函数代码主函数代码代码框截图实例图片运行结果函数实现的中心思想二值图此程序针对于二值图,寻找二值图中像素值为0的连通域,将所有连通域的像素点分别保存下来,将符合条件的连通域的像素值置为255;寻找连通域的关键针对填洞功能的实现,也就…

    2025年11月2日
    4
  • 老Java程序员花一天时间写了个飞机大战,很舒服![通俗易懂]

    引言:前两天我发现CSDN上有两篇飞机大战的文章异常火爆,各种指标都很高(阅读、点赞、评论、收藏等),但都是python写的,竟然不是我大Java,说实话作为老java选手,我心里是有那么一些失落的,难道我大java打飞机不行?就算大java打飞机不行,那我用单身30年的打飞机手速,我肯定行(反正我的代码我做主,就是玩!),于是我决定一展伸手,用java写了一个飞机大战。我就问你们我打飞机行不行,我媳妇都说行,你们呢?欢迎我亲爱的大Java选手们点赞+评论+收藏!给我冲、冲、冲。。。/**游戏窗

    2022年4月8日
    138
  • 【知识小结】Git 个人学习笔记及心得

    【知识小结】Git 个人学习笔记及心得

    2021年10月23日
    45
  • OpenClaw接入智谱GLM-4.7-Flash免费模型教程,打造零成本AI助手

    OpenClaw接入智谱GLM-4.7-Flash免费模型教程,打造零成本AI助手

    2026年3月13日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号