立即执行函数(IIFE)的定义及用法

立即执行函数(IIFE)的定义及用法1 什么是 IIFE IIFE 是立即执行函数表达式 全称为 Immediately invoked function expression 是一种在避免全局命名和变量污染时常用的一种手法 在 ES5 中 由于没有块级作用域的相关说法 如下 for var i 1 i lt 5 i

大家好,我是讯享网,很高兴认识大家。

1.什么是IIFE

    IIFE立即执行函数表达式,全称为Immediately-invoked function expression,是一种在避免全局命名和变量污染时常用的一种手法

     在ES5中,由于没有块级作用域的相关说法,如下

 for(var i = 1;i<5;i++){

    console.log(i);

 }

console.log('i的值为:',i);


讯享网

   我们仍然可以在for循环结束后,访问for循环中定义的相关变量。就如同虽然我们在这个for循环里面设置的一个变量,但是他也会提升到全局作用域中,即我们在外面也会访问到相关的变量,这样就会造成变量污染。我们通常想的是在for循环中定义的循环变量i,通常就只是用来变量的,就希望一旦结束for循环之后,那么这个变量也会随之销毁,那么我们就可以使用IIFE,立即执行函数表达式来进行相关操作

2.IIFE的来源

    其实说了这么多,IIFE其实也就是匿名函数,归根结底都是函数,那么函数的定义其实就只有两种,如下,一种是申明式,一种是表达式。但是两种其实存在着不同,其中第二种中存在着变量提升,后续文章会持续更新

function f1() //函数申明是 var f2 = function() //函数表达式(其中存在着变量提升的情况,后续文章中会持续更新)

讯享网

 3.IIFE的使用

     其实每句话后面的;可以去掉,但是如果是使用了IIFE声明的函数,那么函数最近的一句话的结尾的;就不能省掉,为什么呢?如果省掉的话,就会默认为未说明完,会将下面的和上面的放在一起,这个后续有关分号的相关内容也会进行更新,但是通常我们会在IIFE前面加上分号,如下所示,这就是一个相关的IIFE定义的函数。其实IIFE所定义的函数我们也可以通过定义普通函数实现一样的功能,不过就是写法稍微麻烦了一些罢了。

讯享网var b = 1 ;(function () { var b = 2 console.log('b的值',b); })() console.log(b);

4.IIFE的总结

1 .创建块级(私有)作用域,避免了向全局作用域中添加变量和函数,因此也避免了多人开发中全局变量和函数的命名冲突;有着很好的独立性。

2 .在IIFE中声明的变量或者函数,都会在执行完后立即销毁,这种做法可以减少闭包问题中的内存,因为没有指向匿名函数的引用。只要函数执行完毕,就可以立即销毁其作用域链了;同时也避免了过多占用内存的相关情况

小讯
上一篇 2025-03-15 07:25
下一篇 2025-04-08 08:22

相关推荐

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