В чем разница между этими двумя формами шаблонов модулей в Javascript?

Я заметил, что в разных примерах кода в Интернете есть две разные формы замыкания, но я не смог найти ничего, что определяло бы разницу (если таковая имеется) между ними.

var module = (function() { ... })()

и

var module = (function() { ... }())

Они оба кажутся функционально эквивалентными в примере ниже, но я, кажется, припоминаю, что когда-то различие было важным (код работал с одной формой, но не с другой).

var sdk =(function(){
var privacy='illusion';
return (
    { 
        getPrivacy: function(){return privacy;}
    });
})()

console.log(sdk.getPrivacy());

похоже на тот фрагмент кода, где предпоследняя строка заменена на }())

То же самое кажется верным, если я передаю объект модуля, чтобы связать общедоступные свойства/методы с:

var sdk =(function($){
  var privacy='illusion';
  $.getPrivacy = function() { return privacy;}
  return($);
})(sdk=sdk||{})

console.log(sdk.getPrivacy());

или его аналог, оканчивающийся на }(sdk=sdk||{}))


person Allen Ellison    schedule 20.05.2015    source источник
comment
Вы можете использовать более чистую версию IIFE: var module = function() { ... }(). В этом случае вам не нужны дополнительные скобки.   -  person dfsq    schedule 20.05.2015
comment
return (¶ { - ужас.   -  person Bergi    schedule 20.05.2015
comment
См. также stackoverflow.com/questions/15023560/   -  person Bergi    schedule 20.05.2015
comment
Спасибо, что указали мне на предыдущие вопросы :) Я изо всех сил пытался найти правильные условия поиска.   -  person Allen Ellison    schedule 20.05.2015