こんにちはー。
今、void を使えばアロー関数で{}がいらないんじゃないか説が、
ふと頭のなかを通り過ぎて行きましたので紹介いたしますー。
「void 演算子で、アロー関数の {} がいらない気がする」ということです。
普通に {} はずせばいいのでは?
まず、通常のアロー関数の{}なしの使い方です。
普通の関数がどんどん短くなっていく過程をご覧ください。
// function 式 var a = function (a) { return a + 2; }; // アロー関数にそのまましてみた var a = (a) => { return a + 2; }; // 引数一つだから () いらない。 var a = a => { return a + 2; }; // 中身 1行で return で返されているから {} いらない。 var a = a => a + 2;
こんな感じですかね。
では、次のような例だとどうでしょう。
var num = 0; // function 式 var b = function () { num++; } // アロー関数にそのまましてみる var b = () => { num++; } // () はずしたいけどはずせない。 // {} はずしたいけど、戻り値ないから・・
そうです。戻り値が void のとき(あ、言っちゃった☆)です。
もし、このまま {} をはずせば、戻り値として num が帰ってきてしまい、
意図した結果にはなりません。
さあ、どうしても {} が外したい・・(←なんで?)
どうしよう・・・
そんなときは、void の出番です。
void を使えば、{} を外すことができます。
// void があらわれた!! var b = () => void num++;
それはなぜだ?
void ってなに?
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/void
void は、式を実行するけれど、undefined を返すという演算子なのです。
知っていたけれど、使い方はあまり良くわかっていませんでした。
今まで知っていた使い方は、こんな感じです。
if (a === void(0)) {} // undefined か判定する if (a === void 0) {} // こちらでも良い // でもこれは・・ if (typeof a === "undefined") {} // これで良かった。 // + 下の「ちなみに」(SyntaxErrorだな・・)
また、<a href="javascript:void(0)">hoge</a>
として、
リンクは反応するけれどどこにも行かない、みたいな使い方もできるそうです。
まとめ
実用性があるかどうかはわかりませんが、
ちょっとした発見だったので、投稿しました。
まあ、void
で 4 文字、{}
で 2 文字で、ちょっと負けていますが、
使いたい人がいればどうぞ!!
ちなみに
void を知ったきっかけについて
最初 js 書いていた時、
C# の癖で、function
のことずっと void
って書いていたからです。
なぜこんなに {} が外したいのか
最近、できるだけ短くコードを書くのにハマっているからです。
「行末に ; つけると、1行で書けるよー」・・・はい。