[Javascript] 意外と知らない「分割代入」

2021年8月27日

Javascript テクノロジー

eyecatch 電化製品の生ゴミ処理機を使い始めて、劇的にゴミの量が減った事を体感した、ユゲタです。 いや〜、ゴミを毎回大量に捨てていた自分がアホみたいでしたわ! ゴミの効率化と言えば、プログラミングでも、変数のゴミという考え方があって、 無駄にいらない変数を定義していて、処理コストの無駄使いするのも嫌なのは、誰もがそう思いますし、 VScodeを使っていたら、使っていない変数は、文字色がグレー表示されて、わかりやすくはなっているので、 IDEである程度解決されるとは思いますが、 そんな変数定義について、最近よく「分割代入」というのを使うようになったんですが、 これのメリット・デメリットをよく理解したくて、ブログに備忘録しておきたいと思います。

初心者必見!Javascriptの変数定義方法いろいろ

もともと、var定義しかなかった、Javascriptの値の定義ですが、 いまでは、letもconstもあり、変数、定数(厳密には定数とは少し違いますが)といった値の定義に柔軟性が増えてきました。 もしわからないという人の為に簡単に説明をしておきます。 // 再定義=○、再代入=○ var a = 1; // 再定義=×、再代入=○ let b = 1; // 再定義=×、再代入=× const c = 1; 最近のプログラミングの動向としては、 varは、もはや使わない方が良く、 変数定義は、let 定数定義は、const を使うのがいいようです。 これらは、数値または文字列の代入ですが、それぞれ配列や連想配列(javascriptではObject)の登録もできますが、 配列を代入する時に、その配列内の値を別々の変数に代入したい場合があります。 let [a , b] = [1 , 2]; > a : 1 > b : 2 上記のように、変数a , bそれぞれに、配列の中身が別々に代入してくれます。 []の前にlet定義をすることで、a,bは、letの変数定義がされるので、複数の変数を一括で代入することができるこの「分割代入」は、 便利に使うことができるでしょう。

分割代入のメリット・デメリット

この分割代入は、関数の返り値に対して、非常に有効に使えるので、次のように使うと便利でしょう。 let [a , b] = test(); function test(){ return [1 , 2]; } > a : 1 > b : 2 関数の戻り値に関して、きちんと設計をしていることが大前提なんですが、返り値を一旦変数に入れて、それを別途定義するという面倒くさい処理を これまでやっていたかと思うと、なんともアホらしい感じです。 でも、この際に、変数の値の数と、分割代入する変数の数が違っていると、バグのもとになるので、この点注意が必要です。 let [a , b] = [1 , 2 , 3]; // 3が行方不明になります let [a , b] = [1]; // bにはundefinedが入ります。 でも、エラーになるということはないので、安心して使えるかもですね。 ※ン?こうした場合はエラーになってもらったほうがいいのか?

改めて考えてみた、効率のいい変数定義とは

変数定義は、こうするべき!という書き方をしているwebサイトもよく見かけますが、 別にvarを使ってもいいし、代入変数をしなくても全然大丈夫なんです。 letもconstも、適材適所として、プログラミングする人が、ふさわしいと思う使い方をするというので、十分でしょう。 世の中には、varは使うな!let、できれば、ほぼconstにすべし!という強い記述を見ることもありますが、 そんなんプログラマーの勝手でしょ。と思っちゃいますけどね。 人に強制するのではなく、自分の中のルールをいかに作るかが、エンジニアスキルアップとしてのポイントではないでしょうか? そんな感じで、分割変数、ユゲタは今後も便利に使い続けていくでしょう。