電化製品の生ゴミ処理機を使い始めて、劇的にゴミの量が減った事を体感した、ユゲタです。
いや〜、ゴミを毎回大量に捨てていた自分がアホみたいでしたわ!
ゴミの効率化と言えば、プログラミングでも、変数のゴミという考え方があって、
無駄にいらない変数を定義していて、処理コストの無駄使いするのも嫌なのは、誰もがそう思いますし、
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にすべし!という強い記述を見ることもありますが、
そんなんプログラマーの勝手でしょ。と思っちゃいますけどね。
人に強制するのではなく、自分の中のルールをいかに作るかが、エンジニアスキルアップとしてのポイントではないでしょうか?
そんな感じで、分割変数、ユゲタは今後も便利に使い続けていくでしょう。
0 件のコメント:
コメントを投稿