JavaScript中调用的这种做法是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

当你用这样的函数包装你的JavaScript代码时:

(function(){

  var field = ...;
  function doSomthing(){...
  ...


})();

我注意到这在很多网页上为我解决了范围问题。这种做法叫做什么?

提问于
用户回答回答于

该模式称为自调用,一种自调用函数。它可以创建闭包,但这是模式的效果(可能是预期效果),而不是模式本身。

用户回答回答于

大多数时候它创建了一个closure,它将变量限制在本地闭包中,以便不创建全局变量,它既保持清洁并避免对这些变量进行任何潜在的不必要更改。

当范围内的某些内容暴露给外部范围时,这只是一个创建闭包,通常情况下是这样,但我无法确定您的示例没有看到更多的代码。如果没有任何内容暴露,那么不会创建闭包...否则它只是一个立即执行的匿名函数。

最后的})();格式,而不是});实际调用该闭包立即执行,没有参数。例如,如果你有一些东西在里面,})(something);那么something就会在这里传递第一个参数:(function(somethingParam){

扫码关注云+社区