【Javascript】 よくある代入の書き方 – プログラミング入門
一言に代入と言ってもいくつか書き方があります。ここでは、プログラミングでしばしば行う代入の方法を紹介します。
代入は、英語でassignといいます。
よくある代入
宣言時に代入
let x; x = 10;
というプログラムは、次の1行にまとめることができます。
let x = 10;
このように、宣言と同時に代入することができます。同時に宣言を行っているということ以外は普通の代入と変わりません。
変数の宣言と同時に代入する行為を初期化と呼びます.
箱は作ったら使うのが鉄則なので、箱を作ると同時に使えるようにするのはある意味自然と言えますね。
自分自身を足す場合の省略記法
x = x + 1;
のような、自分自身に代入するタイプのものは省略した書き方ができます。
let x = 1; // x = x + 10; と同じ x += 10; console.log(x);
11
イコールとプラスが組み合わさりました。この書き方は、x
に対してイコールの右側の計算結果を足す、という意味になります。
このような、代入と他の計算が合わさった演算子を複合代入演算子と呼びます。
とはいえ、名前をつけて呼ぶことはほぼありません。名前よりも書き方をしっかり覚えましょう。
自分自身を使って計算して代入することについては、下のページに載せています。
もう一つ、例を見てみます。
let x = 1; x += 10 - 5; console.log(x);
> node app.js 6
さて、この場合はx += 10 - 5
はx = x + 10 - 5;
で結果が6
になると思った方も多いと思います。しかし、そうではありません。
ここで思い出すべきは、右側の計算結果が左側の変数にされる、というものです。
つまり、x = x + (10 - 5);
と等しいとするのが正しいということです。足し算ならどちらでも結果は同じですが、掛け算や割り算だと結果変わってくるので、ここの認識は正しく持つ必要があります。
これらの省略記法は、引き算、掛け算、割り算などでも可能です.
let x = 1; x += 10 + 1; x -= 10 + 2; x *= 10 + 3; x /= 10 + 4;
それぞれ、
let x = 1; x = x + (10 + 1); x = x - (10 + 2); x = x * (10 + 3); x = x / (10 + 4);
と等しくなります。
インクリメントとデクリメント
変数に対し1
を足す、という行為は更に省略可能です。このように書きます。
let x = 1; x++; console.log(x);
2
x++
はx += 1;
と同等です。さらに言えば、x = x + 1;
と同じ、というわけです。
引き算も同様です。
let x = 1; x--;
0
これはx -= 1;
と等しいです。
この1を足すという行為は、しばしばfor文など、数をカウントするとき用いられます。
++x
, --x
は、前置インクリメント、前置デクリメントと呼ばれます。先ほど紹介したものは後置です。
前置の場合、足してからxの値が使われ、後置の場合、値を使ってから足します。
つまり、y[x++]
は先にxを加算してからy
の要素を取得しますが、y[++x]
は先にx番目の要素を取得してからx
に1を足します。
インクリメントが頻出するfor文については下のページにあります。
連続して代入
同じ値を複数の変数に代入する場合、=
で数珠つなぎにできます。
let x = y = 100; console.log(x, y);
100 100
もちろん、x = y = z = a = b = 200;
のようにいくつでもつなぐことができます。
深い話になりますが、Javascriptの代入も足し算などと同様に式の1つで、代入した際は代入した値自体が計算結果になります。そのためy = 100
の計算結果は100
です。よって、途中式はx = 100
となります。
10 + 30
の計算結果が40
であるように、y = 100
の計算結果は100
ということです。
まとめ
代入は、一定の条件で省略して書くことが可能です。特にx += 10
のような書き方はどこでも利用し、x++
のようなインクリメントはfor文で頻出します。必ず使えるようになりましょう!
