どんな方法を使ってますか?

一般的な
(function(){   console.log(1); })();
(function(){   console.log(2); }());
とかですか?

1つめは最初の()の中で無名関数を作ってそれを2つめの()で実行しています
2つめは()の中で関数作ってそのまま実行しています
()の中なら「function」が式だと認識されるので 直接
function(){   console.log(-1); }(); // ERROR!
と書いても動かないのを動かせるわけです

この動かないのは「function」が最初に来ると式じゃなくて構文だとJavaScriptが判断するので「function」構文の後に()が来れなくてエラーになります

初心者さんはなぜコレじゃ動かないの?と疑問に思うと思いますがそういう理由なんです
関数構文なんて捨てて全部無名関数を作る式にすればいいのに と個人的には思ってます

***

「function」が関数宣言にならずに無名関数を作る「function」とみなされれば(functionが構文じゃなくて式としてみなされれば)良いだけなので
!function(){   console.log(3); }();
+function(){   console.log(4); }();
とかですか?

こっちだと()で囲むのに比べて1文字減ります

単項演算子をつけることで「function」を式として扱うようにしているだけなのであまり見ない
-function(){   console.log(5); }();
~function(){   console.log(6); }();
もOKです

二項演算子になるとエラーです
*function(){   console.log(-2); }();  // ERROR!

もう一つ項を与えればいいので
1*function(){   console.log(7); }();
1%function(){   console.log(8); }();
にすれば動きます

()をつけたのと文字数は一緒ですが何がしたいのかわかりづらいのでまずやらないと思います
もちろんですが 返り値をそのまま使って計算したいときは別です
単に無名関数実行するだけでこれはないってことです

***

どれも最後に()をつけて実行していますが別な方法で実行するものもあります
new function(){   console.log(9); };
newを使います
文字数は「new 」で4文字です(半角スペースあります)
()()などと同じ文字数ですね

newの後に関数がくると引数がなくても関数を実行してくれるのがJavaScriptの仕様です
そのときは引数なしでの実行になります
関数を実行してくれるので最後に()がいらなくなります
また new があるので「function」は式になります

new使っているので関数内でthis.x = 10;とか書けばconstructorに書くのと同じでthisに入れたものが入ったオブジェクトが返って来ます
この文ではインスタンスが作られています
一度きりなので他の言語の無名クラスっぽいですね

ところでnew Function()は別物です
Functionは関数を作る関数です
引数に実行する内容を文字列で入れます
new Function("console.log(10)");
実行するなら
new Function("console.log(11)")();
です
evalが行われるのでevalが禁止されてる環境だとエラーになります(Chromeの拡張機能とか)
それ以前にnew Function(){}という書き方はsyntax errorで書き方が違ってますね

普通に考えられるのはこれくらいだと思います
newの方法なんて自分では思いつかなかったのでもしかするともっとあるのかもしれません
他に 何かあればおしえてください!

***

いろいろ書きましたが実際使うときは1つめか2つめが返り値も受け取れるのでいいのかなと思います
+とか!をつけると数値や真偽値型にキャストされてしまうので返り値が欲しいときには向いていないです