アロー関数が複雑すぎる
- カテゴリ:
- JavaScript
- コメント数:
- Comments: 0
◆ 読みやすさは大切です
◆ カッコないと最初の => 以降は全部関数内
◆ カッコないと最初の => 以降は全部関数内
デフォルト引数混ざるとカオス
ぱっと見てこれがどうなってるのかわかる気がしないです
さてこの中に1つエラーがあります
実行せずに気づけましたか?
こんなに長くなってくるとなれない人は読む気もなくなってくると思いますが カッコが無い時は最初の => 以降は関数の中で実行されます
d = e = f とかありますが ↑の式だと関数を作ってるだけで何も変化しません
↑の式の返り値を変数に代入して実行すると
カッコがないときはデフォルト関数にはならないので b に c => d = e = f => g => h という関数が代入されます
var などがないのでグローバルに b が作られます
また その b への代入式がそのまま返り値になるので
↑の方法または b() を実行すると
x = y = 1 と同じ考えで f => g => h が d と e に代入されます
d か e を実行 もしくは fn()()() とすると
単純なアロー関数を作るだけです
ここは何にも代入されないので d()() か e()() もしくは fn()()()() とすれば最後の
h を評価するのですが グローバルに h を作っていないと h が定義されていないとエラーになります
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
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 を実行できますfn()()
↑の方法または 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)
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
5 function c => d = e = f => g => h 5 function f => g => h function f => g => h 5 5 5