We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Learn more about funding links in repositories.
Report abuse
There was an error while loading. Please reload this page.
第41天 说说你对IIFE的理解
立即执行函数,函数被创建后即刻执行,所以也不需要函数名,然后释放。一般用于创建其他函数所依赖的环境,这里指闭包。
不知道我的表达正不正确? 还是我说的就是错的? help
立即执行函数,函数被创建后即刻执行,所以也不需要函数名,然后释放。一般用于创建其他函数所依赖的环境,这里指闭包。 不知道我的表达正不正确? 还是我说的就是错的? help
BINGO, 理解, 但是可以在具体一些, 有什么作用啊! 干嘛的啊! 有什么优缺点啊! 使用场景啊! 自己的理解啊!...... AND SO ON......
@wenyejie 常见场景有 防抖, 节流以及关于 jsonp 的回调函数。 优点不用生成一个变量? 缺点,在使用闭包时可能引起内存泄露,所以应当注意赋值时不要产生循环引用。
我感觉我面试时,老是回答不出面试官想要的 🙂🙂🙂, 怀疑自己的理解了 ....
IIFE 就是 ;(() => {})() 这样的形式。
;(() => {})()
js es5之前没有块级作用域啊,IIFE就干这个事,就是为了私有化作用域的变量,不过 es5 const let 加入了块级作用域。
题外话:最怕这种说理解的题目,对于一些表达不好的理工科生简直就是致命打🐔
独立作用域,避免变量冲突问题,很多库就是这个写法
;(function(){ })()
IIFE是立即执行函数,在一些常见的框架中,会使用立即执行函数形成一个独立作用域,在这个函数通常会写一些依赖环境之类的东西; 立即执行函数中,写完其中的变量不会被销毁,形成闭包
立即执行函数一般是(function (){})() ,还有这样写的 (function (){}()) 它们是等价的 还有一些其他的写法: !funtion (){}() ?funtion (){}() let fun = funtion (){}() 为了让一个匿名函数立即执行要满足2个条件:第一函数体后面一定要有小括号,第二不能是声明函数,一定是函数表达式
那么你肯定会问,刚刚写的这么多例子,不都是函数声明么,那是因为括号运算符或者! , ?,=在一定程度上把函数声明转换为函数表达式了
在立即执行函数中,如果想要访问全局中的变量,直接行参引入window即可;
(function( window, undefined ) {//……})(window);
jQuery 整個就是一個立即执行函数。
(function(){})(); 是立即执行函数常用的表现形式之一。
(function(){})();
另一种也很常用:
(function(){}());
什么时候使用
1.当我们需要写一个 js 插件,并且复用率很高的时候,建议使用
2.如果命名的函数只需要使用一次,建议使用
3.独立模块,这个跟第一点差不多。单独出来,想强调一下立即执行函数的好处,开发的时候,能做到各组合模块的低耦合,减少对全局作用域的污染
Immediately Invoked Function Expression 立即调用函数表达式
(function(){})() 当代码执行到这里时立即执行,并且外部函数无法访问里面的变量
(function(){})()的写法: 目的是模拟私有变量,防止变量全局污染
IIFE:立即调用函数表达式
(function (){ statements })();
它包含两部分
自执行函数,函数一旦创建会立即被执行,优点是:函数内部是是作独立的作用域,避免对全局造成变量污染。 例子: (function(){})()
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(){})()