【Javascript】 変数を使う – プログラミング入門

前回は、変数の宣言の仕方や、値の代入の仕方を紹介しました。ここでは、新しい代入の仕方を含めた、変数の基本的な使い方を紹介していきます。

宣言の方法など、前回の内容はこちら

変数を使って計算

変数を使うときは中身が使われるというのを前回紹介しました。そのため、次のような書き方ができます。

let x;
x = 10;
console.log(x + 20);
30
  1. xを宣言
  2. x10を代入
  3. x + 20の結果を表示
    この時点で、xには10が入っている

x10を足し算していますね。プログラムは上から順番に実行されるので、console.log(x + 20);は、console.log(10 + 20);と実質同じになります。

それでは、次のようなパターンを見てみましょう。

let x;
x = 10;
console.log(x + 20);
x = 50;

console.logのあとにx = 50;が追加されました。しかし、表示される結果は同じです。日本語で見ていきましょう。

  1. xを宣言
  2. x10を代入
  3. x + 20の結果を表示
    この時点で、xには10が入っている
  4. x50を代入

このように、console.logxを使った瞬間では、x = 50;の代入は行われていないことがわかります。プログラムは上から順番に実行されるので、後がどうなっていても関係ないというわけです。

変数と変数を計算

もちろん、変数と値だけでなく、変数同士で計算することもできます。

let x;
let y;
x = 10;
y = 20;
console.log(x + y);
> node app.js
30
  1. xを宣言
  2. yを宣言
  3. x10を代入
  4. y20を代入
  5. xyを足した値を表示
    この時点でx10y20が入っているのでx + y10 + 20と同等

となります。もちろん足し算以外にも、通常の四則演算や括弧を使うこともできます。

変数に変数を代入

変数に値を入れることができるのと同様に、変数に変数の値を入れることができます。

let x;
let y;
x = 10;
y = x;
console.log(y);
  1. xを宣言
  2. yを宣言
  3. x10を代入
  4. yxの値を代入
    この時点でのxの値は10
  5. yの値を表示

つまり、y = x;をした場所で、yには10が代入されたということになります。

assign var

次のパターンもみてみましょう。

let x;
let y;
x = 10;
y = x;
x = 20;
console.log(y);

この場合も、console.logの部分でのyの値は変わりません。

つまり、変数に値を代入するときは、値を共有しているのではなく、コピーしているというわけです。

また、代入に使われるのは計算した結果でした。つまり、このような使い方も可能です。

let x;
let y;
x = 10;
y = x + 100;
console.log(y);
110

yには、x + 100の結果である110が代入されたというわけです。

自分自身を使って代入する

次のコードを見てみましょう。

let x;
x = 10;
x = x + 20;
console.log(x);
30

x = x + 20;が現れました。ここでは、xに対し、x + 20の計算結果が代入されるということです。

つまり、ここでも必ず右側が先に計算され、その計算結果が左側にある変数に代入されるという流れを踏んでいます。

  1. x + 20を計算
    この時点でx10が代入されている
  2. 計算結果は30
  3. x30が代入される

という流れです。自分自身を使った値を代入するというのは、最初は少し違和感があるかもしれません。

しかし、右側を計算し、その結果を左側の変数に代入する、という流れを意識すれば問題ありません。ゆっくり慣れていきましょう!

例えば、x = y;での右辺の計算結果は、yの値を取り出したものになります。プログラムの動作上ではyのままだと計算が終わっていないということで、その値を取り出して初めて計算完了ということになります。

まとめ

どのような代入でも、右側の計算結果を左側の変数に代入する、という流れを踏みます。

計算のときに変数を使うと、その変数に入っている値が計算に使われます。その流れを踏まえると、自分自身の変数を使った計算結果を自分に代入するといった行為も可能です。

var usage thumb

役に立ったらシェアしよう!