在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 次 |
最近记录: |