(function(){})()这个为什么是闭包?
(function(){})()这个为什么是闭包?
(function(){})()这个为什么是闭包?
2017-02-09
(function(){})()这不叫闭包这叫立即执行函数,所谓闭包,要拆成闭和包,闭指代不想暴露给外部的数据,包指代将数据打包出去暴露给外部;之所以这么说原因在于JS的函数作用域,函数内部的变量函数外部无法访问,这形成了闭;函数外部想得到函数内部的变量,可以通过某些方法譬如通过return等语句将内部的变量暴露出去,这形成了包;因而——立即执行函数只是函数的一种调用方式,和闭包没有必然的联系;闭包是和作用域扯上关系的,而(function(){})()是函数声明完就执行,只是有时想要用到闭包那么可以用(function(){})()来构成闭包,而不是(function(){})()是闭包。把你的问题说的通俗点(function(){})()假设是新东方厨师学校,那么按你的问题就是(function(){})()为什么是厨师,然而厨师也可以是function a(){}旧东方厨师学院出来的,只是同为厨师(闭包)两者去了不同的学校(函数)而已,但改变不了他们是厨师的本质。
举报