IIFE-立即调用执行函数
七娃博客912人阅读
作为一名野生开发者,没有系统的学习,js部分还是有很大的缺陷的,就比如这个iife,我竟然最近才了解到,很是汗颜哇!
IIFE定义:Immediately Invoked Function Expression,意为立即调用的函数表达式,也就是说,声明函数的同时立即调用这个函数
IIFE的出现是为了弥补JS在scope方面的缺陷:JS只有全局作用域(global scope)、函数作用域(function scope),从ES6开始才有块级作用域(block scope)
js写法
写法一:
var a = 6;//全局声明 //iife开始 (function(gl){ var a = 5; //块级声明 console.log(a); //调用块级变量 5 console.log(gl.a); //调用全局变量 6 })(window) //iife 以()结束
写法二:
var a = 6;//全局声明 //iife 开始 (function(gl){ var a = 5 //块级声明 console.log(a) //调用块级变量 5 console.log(gl.a) //调用全局变量 6 }(window)) //iife 结束
两者区别就是最后的 () 可以单独放,也可以放函数体内,看起来很像闭包的写法
IIFE和闭包的区别:
闭包 是指内部函数总是可以访问其所在的外部函数中声明的变量和参数。JavaScript 中的所有函数都是闭包的,JavaScript 中的函数会自动通过隐藏的 [[Environment]] 属性记住创建它们的位置,所以它们都可以访问外部变量
评论 | 0 条评论
登录之后才可留言,前往登录