JavaScript 入門 (2)

数値を扱う

さて、単純な文字列を出力する方法はこれで分かりました。次はもうちょっと別のものを出力してみましょう。

まずは数値です。 Test スクリプトを次のように変更します。

print(100);

これを実行すると、次のように Console に出力されます。

100

このように引用符無しで数値を書くと、それは数値として認識されます。

数値の場合は文字列と違って計算ができます。スクリプトを次のように変更して実行してみましょう。

print(123 + 456);

出力は次のようになります。

579

掛け算にはアスタリスク「*」、割り算にはスラッシュ「/」を使います。括弧や小数点を使うこともできます。例えば次のような複雑な計算もできます。

print( (1 + 2) * 3 / 4.56 );

出力は次のようになります。

1.97368421053

文字列の足し算

JavaScriptでは文字列も足し算することができます。文字列の足し算は「ふたつの文字列を繋げる」という意味合いを持っています。

例えば次のようにすると、 "Java""Script" というふたつの文字列が繋げられて JavaScript と出力されます。

print("Java" + "Script");

また面白い機能として「文字列に対して数値を足し算する」というものもあります。これにより文字列と数値を繋げて出力することができます。例えば次のスクリプトを実行すると My number is 100 と出力されます。

print("My number is " + 100);

それでは My number is の後に 100 + 100 の計算結果を出力するには、どうしたらよいでしょう?

print("My number is " + 100 + 100);

これは不正解です。これを実行すると My number is 100100 と出力されてしまいます。これは「足し算は左から順に行われる」という計算順序のルールがあるためです。

Calculation order

これを防ぐには括弧を使って明確に計算順序を指定する必要があります。

print("My number is " + (100 + 100));

これなら My number is 200 と表示されるはずです。

変数を使う

スクリプトで文字列や数値を使う方法はこれで分かりました。これらの文字列や数値は、スクリプトの中に記述されたものであり、後から内容を変更することができません。しかしゲームのスクリプトを組むにあたっては、このような固定された値ばかりでなく、プレイヤーの入力や時間の経過によって変化する値を扱いたくなるはずです。

このように「実行中に変化する値」を扱うために用意されている概念が変数です。

例えば前節では100という数値を出力するために、次のようなスクリプトを作成しました。

print(100);

変数を使って同じことをやってみましょう。変数にはそれぞれ名前を付けることができます。ここでは num1 という名前を使うことにしましょう。次のように記述します。

var num1 = 100;

先頭にある var は「今から新しい変数を定義するよ」という宣言です。その直後には変数の名前を記します。そしてその後には = を書きました。これは「この後に書く値を変数に入れてくれ」という指示です。これを変数への代入と呼びます。代入する値は100としました。文の最後にはお決まりのセミコロンを置きます。

こうして宣言した変数を使うには、スクリプトの中に変数の名前をそのまま記します。例えば変数 num1 の内容を出力するには次のようにします。

var num1 = 100;
print(num1);

計算なども、数値を直接書くのと同じ要領でできます。例えば次のスクリプトは 123 + 456 + 789 と書いたのと同じ結果が得られます。

var num1 = 123;
var num2 = 456;
print(num1 + num2 + 789);

変数の持つ値は、代入をし直すことによって変更することができます。例えば次のスクリプトは、最初は変数 year に 2011 を代入していますが、その次の行では 1988 を引いた値を代入し直しています。この行で変数 year の持つ値は 23 となります。最終的に Console には This year is Heisei 23 と出力されるはずです。

var year = 2011;
year = year - 1988;
print("This year is Heisei " + year);

文字列を変数で扱う

文字列も同様に変数へ代入することができます。例えば変数 name に文字列 "Unity" を代入するには次のようにします。

var name = "Unity";

計算も数値や文字列に対して行ったのと同様にできます。次のようにすると Console には Unity is born in 2001 と出力されます。

var name = "Unity";
var birth = 2001;
print(name + " is born in " + birth);