なんか話ずれてないか?

> (1)アロー関数(さらに省略版)の即時実行できると思ったらできませんでした
> var obj = ((x)=>{a:x})(10);
> console.log(obj);//undefined

実行できてる。xをそのまま返すのではなく、alertをしてみれば
alertが表示されていることから、実行できてることがわかる
var obj = ((x)=>{a:alert(x)})(10);

即時実行かどうかは関係ない。以下は同じ意味
{}でくくると値を戻すのにreturnが必要なだけ

x => x + 1
x => (x + 1)
x => { return x + 1 }


アロー関数の右側は、単体の式(=一行)を使用するようにしたほうが良い。
{} を使うときは複数行で書きたい時。
だけどアロー関数は、関数を引数(値)のように見せて使うもので
複数行なんか書いてしまったら、関数のようにしか見えない