我注意到,在网络上的不同代码示例中,有两种不同的闭包形式——但我无法找到任何可以识别两者之间差异(如果有的话)的东西。
var module = (function() { ... })()
和
var module = (function() { ... }())
在下面的示例中,它们似乎在功能上是等效的,但我似乎记得有一次,区别很重要(代码使用一种形式,而不是另一种形式)。
var sdk =(function(){
var privacy='illusion';
return (
{
getPrivacy: function(){return privacy;}
});
})()
console.log(sdk.getPrivacy());
似乎与倒数第二行替换为的代码片段相同}())
如果我传入一个 Module 对象以将公共属性/方法关联到:
var sdk =(function($){
var privacy='illusion';
$.getPrivacy = function() { return privacy;}
return($);
})(sdk=sdk||{})
console.log(sdk.getPrivacy());
或其对应形式以}(sdk=sdk||{}))