当您将JavaScript代码包装在这样的函数中时:(function(){ var field = ...; function doSomthing(){... ...})();我注意到,这为许多网页上的我解决了范围界定问题。这种做法叫什么?
3 回答
www说
TA贡献1775条经验 获得超8个赞
为了澄清下面的评论,在大多数情况下,它创建一个闭包时,它将变量的范围限制在该局部闭包中,这样就不会创建全局变量,既可以使事情保持整洁,又可以避免对这些变量进行任何不必要的更改。
这里有一些出色的答案,解释了其中的原因:javascript闭包是如何工作的?
通常情况下,只有当该作用域中的某些内容暴露于外部作用域时,这才是创建闭合,但是我不能确定您的示例是否会看到更多代码。如果没有暴露任何东西,那么就不会创建任何闭包...否则,它只是一个立即执行的匿名函数。
与之})();相反的});是,最后的格式实际上是在没有参数的情况下立即调用该闭包以立即执行。如果你曾在它的东西,例如})(something);那么这something将作为第一个参数在这里进行传递:(function(somethingParam){。
添加回答
举报
0/150
提交
取消