Awkward way of executing JavaScript code
本问题已经有最佳答案,请猛点这里访问。
在google关于实现google+登录flask应用程序的教程中,我发现开发人员经常使用一种笨拙的方式来执行javascript代码:
而不是做
1 | var a = foo(bar); |
我看到这一点:
1 2 3 | var a = (function() { return foo(bar); })(); |
为什么要用这种奇怪的方式?
这是一个糟糕的例子。考虑以下事项:
1 2 3 4 5 6 7 | var a = (function(){ var ret = {}; ret.test ="123"; function imPrivate() { /* ... */ } ret.public = function() { imPrivate(); } return ret; })(); |
看看为什么这个函数用括号括起来,后面跟着括号?更多信息。
1 2 3 | var a = (function() { return foo(bar); })(); |
在这种情况下,这确实是不必要的,但这并不是错误的,它不会抛出错误。
但是,
1 2 3 4 | var a = (function() { /* some other code in own scope */ return foo(bar); })(); |
在这种情况下,
闭包函数用于封装函数中的一些属性/方法。很像其他语言的私有/公共原则。
您可以在模块模式下找到关于这个主题的更多信息。