第41天 说说你对IIFE的理解
Activity
cleverboy32 commentedon May 27, 2019
立即执行函数,函数被创建后即刻执行,所以也不需要函数名,然后释放。一般用于创建其他函数所依赖的环境,这里指闭包。
不知道我的表达正不正确? 还是我说的就是错的? help
wenyejie commentedon May 27, 2019
BINGO,
理解, 但是可以在具体一些, 有什么作用啊! 干嘛的啊! 有什么优缺点啊! 使用场景啊! 自己的理解啊!...... AND SO ON......
cleverboy32 commentedon May 27, 2019
@wenyejie 常见场景有 防抖, 节流以及关于 jsonp 的回调函数。 优点不用生成一个变量? 缺点,在使用闭包时可能引起内存泄露,所以应当注意赋值时不要产生循环引用。
我感觉我面试时,老是回答不出面试官想要的 🙂🙂🙂, 怀疑自己的理解了 ....
tzjoke commentedon May 28, 2019
IIFE 就是
;(() => {})()
这样的形式。js es5之前没有块级作用域啊,IIFE就干这个事,就是为了私有化作用域的变量,不过 es5 const let 加入了块级作用域。
题外话:最怕这种说理解的题目,对于一些表达不好的理工科生简直就是致命打🐔
myprelude commentedon Jun 13, 2019
独立作用域,避免变量冲突问题,很多库就是这个写法
seho-dev commentedon Sep 10, 2019
IIFE是立即执行函数,在一些常见的框架中,会使用立即执行函数形成一个独立作用域,在这个函数通常会写一些依赖环境之类的东西;
立即执行函数中,写完其中的变量不会被销毁,形成闭包
立即执行函数一般是(function (){})() ,还有这样写的 (function (){}()) 它们是等价的
还有一些其他的写法: !funtion (){}() ?funtion (){}() let fun = funtion (){}()
为了让一个匿名函数立即执行要满足2个条件:第一函数体后面一定要有小括号,第二不能是声明函数,一定是函数表达式
那么你肯定会问,刚刚写的这么多例子,不都是函数声明么,那是因为括号运算符或者! , ?,=在一定程度上把函数声明转换为函数表达式了
在立即执行函数中,如果想要访问全局中的变量,直接行参引入window即可;
ZindexYG commentedon Sep 20, 2019
(function( window, undefined ) {//……})(window);
jQuery 整個就是一個立即执行函数。
(function(){})();
是立即执行函数常用的表现形式之一。另一种也很常用:
(function(){}());
什么时候使用
1.当我们需要写一个 js 插件,并且复用率很高的时候,建议使用
2.如果命名的函数只需要使用一次,建议使用
3.独立模块,这个跟第一点差不多。单独出来,想强调一下立即执行函数的好处,开发的时候,能做到各组合模块的低耦合,减少对全局作用域的污染
blueRoach commentedon Jul 15, 2020
Immediately Invoked Function Expression
立即调用函数表达式
(function(){})()
当代码执行到这里时立即执行,并且外部函数无法访问里面的变量
Alex-Li2018 commentedon Aug 11, 2020
(function(){})()的写法:
目的是模拟私有变量,防止变量全局污染
smile-2008 commentedon Oct 13, 2020
立即执行函数,函数被创建后即刻执行,所以也不需要函数名,然后释放。一般用于创建其他函数所依赖的环境,这里指闭包。
不知道我的表达正不正确? 还是我说的就是错的? help
smile-2008 commentedon Nov 2, 2020
立即执行函数,函数被创建后即刻执行,所以也不需要函数名,然后释放。一般用于创建其他函数所依赖的环境,这里指闭包。
不知道我的表达正不正确? 还是我说的就是错的? help
HNHED commentedon Sep 4, 2021
什么是IIFE?
IIFE:立即调用函数表达式
它包含两部分
xiaoqiangz commentedon Jun 2, 2022
自执行函数,函数一旦创建会立即被执行,优点是:函数内部是是作独立的作用域,避免对全局造成变量污染。
例子: (function(){})()