执行JavaScript代码的尴尬方式

Pas*_*day 91 javascript

Flask应用程序中实施Google+登录的Google 教程中,我发现开发人员经常使用一种执行JavaScript代码的笨拙方式:

而不是做

var a = foo(bar);
Run Code Online (Sandbox Code Playgroud)

我看到了这个:

var a = (function() {
  return foo(bar);
})();
Run Code Online (Sandbox Code Playgroud)

以奇怪的方式做到这一点的原因是什么?

Cha*_*sch 39

这是一个糟糕的例子.考虑以下:

var a = (function(){
    var ret = {};
    ret.test = "123";
    function imPrivate() { /* ... */ }
    ret.public = function() { imPrivate(); }
    return ret;
})();
Run Code Online (Sandbox Code Playgroud)

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

请参阅为什么此函数包含在括号中,后跟括号?了解更多信息.


Pin*_*nal 10

var a = (function() {
  return foo(bar);
})();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,这实际上是不必要的,但这没有错,它不会抛出错误.

IIF有些时候使用如下module pattern:

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

在这种情况下IIF只是一个module外部出口的东西.


归档时间:

查看次数:

2049 次

最近记录:

7 年,9 月 前