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