1-й недействителен, однако вместо этого вы можете сделать следующее:
var myfunction = function () {
// code here...
}();
Как и в других ответах, нет разницы между вторым и третьим, они одинаковые.
Вместо использования круглых скобок также допустимо следующее:
!function() { /* code here... */ }();
~function() { /* code here... */ }();
+function() { /* code here... */ }();
-function() { /* code here... */ }();
new function() { /* code here... */ };
new function(arguments) { /* code here... */ }(arg);
Примечание: Люди привыкли называть эти функции «Самоисполняющаяся анонимная функция», но термин неверный. Теперь они называются « Выражения немедленного вызова функций (IIFE) », произносится как «iffy»!