◆ 読みやすさは大切です
◆ カッコないと最初の => 以降は全部関数内 

デフォルト引数混ざるとカオス
a = 1
a => 1
a = b => 1
a = b = c => 1
a = (b = c) => 1
a = (b = c => 1)
(a = b = c) => 1
(a = b) = (c => 1)
a => b => c => 1
(a = b) => (c => 1)
a = b => c = 1

ぱっと見てこれがどうなってるのかわかる気がしないです
さてこの中に1つエラーがあります

実行せずに気づけましたか?



a => b = c => d = e = f => g => h

こんなに長くなってくるとなれない人は読む気もなくなってくると思いますが カッコが無い時は最初の => 以降は関数の中で実行されます
d = e = f とかありますが ↑の式だと関数を作ってるだけで何も変化しません

↑の式の返り値を変数に代入して実行すると
b = c => d = e = f => g => h
が実行されます

カッコがないときはデフォルト関数にはならないので b に c => d = e = f => g => h という関数が代入されます
var などがないのでグローバルに b が作られます
また その b への代入式がそのまま返り値になるので
var fn = a => b = c => d = e = f => g => h
fn()()
としても b を実行できます

↑の方法または b() を実行すると
d = e = f => g => h
が実行されます

x = y = 1 と同じ考えで f => g => h が d と e に代入されます
d か e を実行 もしくは fn()()() とすると
g => h
が実行されます
単純なアロー関数を作るだけです

ここは何にも代入されないので d()() か e()() もしくは fn()()()() とすれば最後の
h
が実行されます
h を評価するのですが グローバルに h を作っていないと h が定義されていないとエラーになります
var a = b = c = d = e = f = g = h = 5
var fn = a => b = c => d = e = f => g => h
console.log(fn()()()())
console.log(a,b,c,d,e,f,g,h)
5
5   function c => d = e = f => g => h   5   function f => g => h   function f => g => h   5   5   5