执行 JavaScript 代码的尴尬方式

2022-08-30 04:55:03

在 Google 关于在 Flask 应用程序中实现 Google+ 登录的教程中,我发现开发人员经常使用一种尴尬的方式来执行 JavaScript 代码:

而不是做

var a = foo(bar);

我看到这个:

var a = (function() {
  return foo(bar);
})();

以奇怪的方式这样做的原因是什么?


答案 1

这是一个糟糕的例子。请考虑以下事项:

var a = (function(){
    var ret = {};
    ret.test = "123";
    function imPrivate() { /* ... */ }
    ret.public = function() { imPrivate(); }
    return ret;
})();

a将包含可变测试和函数公共,但是您无法访问 imPrivate。这是处理公共变量与私有变量的常用方法;

有关详细信息,请参阅为什么此函数括在括号中,后跟括号?


答案 2
var a = (function() {
  return foo(bar);
})();

在这种情况下,这确实是不必要的,但这并不是错的,也不会引发错误。

但有时使用如下:IIFmodule pattern

var a = (function() {
  /* some other code in own scope */
  return foo(bar);
})();

在这种情况下,只是一个出口的东西在外面。IIFmodule