見出し画像

はじめてのJScript+WSH その4 JScriptの変数

はじめに

JScriptの変数の確認をします。

変数の宣言

varを付けて宣言をします。
型は自動判別(動的型付け)されます。

var message = "hello world";
WScript.echo(message);     // => hello world

上記の例では、変数messageを宣言する際に、文字列"hello world"を代入しているので、この変数messageは文字列型になります。

文字列型(string)

文字列型は0文字以上の文字になります。
文字はシングルクォーテーション(')または、ダブルクォーテーション(")で囲むことで使用できます。

messageは文字列型となり「hello world」が格納される

var message = "hello world";
WScript.echo(message);     // => hello world

messageは文字列型となり「hello "JScript" world」が格納される

var message = 'hello "JScript" world';
WScript.echo(message);   // => hello "JScript" world

messageは文字列型となり「414」が格納される
※数値としては扱われない

var message = "414";
WScript.echo(message);  // => 414

messageは文字列型となり「」が格納される(空の文字列)

var message = "";
WScript.echo(message);  // =>   ※何も表示されない

数値型(number)

数値型は数値を格納し、整数、小数の区別はありません。(内部的にはすべて浮動小数点扱い)
また、正の数、負の数、0の整数、小数を表現できます。
また、10進数、8進数、16進数を表現できます。8進数は先頭に"0"、16進数は先頭に"0x"を付けます。
※余談ですが、ping 192.168.100.010と打つと、192.168.100.10宛ではなく、192.168.100.8宛にpingが飛びます。これは"010"が8進数と認識され、これを10進数に直すと"8"になるためです。

var a = 100;
var b = 0.1
var c;

// 足し算
c = a + b;
WScript.echo(c); // => 100.1

// 引き算
c = a - b;
WScript.echo(c); // => 99.9

// 掛け算
c = a * b;
WScript.echo(c); // => 10

// 割り算
c = a / b;
WScript.echo(c); // => 1000

// 割った余り
a = 10; b= 3;
c = 10 % 3;
WScript.echo(c); // => 1

また、インクリメント(++)、デクリメント(--)が使用可能です。
インクリメントは1だけ増加、デクリメントは1だけ減少します。

var a;

a = 1;
WScript.echo(a); // => 1

a = a + 1;
WScript.echo(a); // => 2

a++;
WScript.echo(a); // => 3

配列(array)

複数の変数を一つの変数にまとめて格納できます。(数学のベクトルや行列のようなイメージです)
配列はインデックス(項番)を付けて格納している変数を管理します。

var messages = ["hello","world"];
WScript.echo(messages[1]);       // => world
WScript.echo(messages[0]);       // => hello

また、連想配列(hashmap)も使用可能です。
こちらはインデックスではなくkeyで管理します。

var fruits = {
 apple : 100,
 orange: 200
}

WScript.echo(fruits["apple"]);   // => 100 
WScript.echo(fruits["orange"]);  // => 200

WScript.echo(fruits.apple);      // => 100
WScript.echo(fruits.orange);     // => 200

連想配列は下記のような書き方も可能です。この場合、ドット演算子での指定は不可です。

var seguments = {
 "192.168.11.0": "home",
 "192.168.12.0": "office"
}

WScript.echo(seguments["192.168.11.0"]); // => home
WScript.echo(seguments["192.168.12.0"]); // => office

WScript.echo(seguments."192.168.11.0");  // => コンパイル エラー: 識別子がありません。
WScript.echo(seguments."192.168.12.0");  // => コンパイル エラー: 識別子がありません。

オブジェクト(object)

クラスのような扱いができます。(継承は不可)
オブジェクトの中に、変数や関数を入れることができます。
※WScript.Echo()は、WScriptオブジェクトの中のEcho関数を呼び出しいます。
詳細は後述です。

その他

ブール型(boolean):trueまたはfalseが入ります。
ヌル型(Null):オブジェクトを削除する際、オブジェクトにnull値を代入します。
未定義型(undefines):変数を宣言したが代入していない場合や、存在しないオブジェクトのプロパティを使用した場合に出てきます。デバッグ中に見かけます。

変数のスコープ

関数の中で宣言された変数は関数の外では使えません。
※関数は後の記事で説明するので、現時点で分からない場合は読み飛ばしてください。

var foo = function(){
  var message = "hello world";
}
WScript.echo(message); // => Microsoft JScript 実行時エラー: 'message' は宣言されていません。

ブロックスコープはありません

{
  var message = "hello world";
}
WScript.echo(message); // => hello world 

おわりに

今回は長かったので、覚えきれないと思います。コードを書いていくうちにすぐ慣れる(覚える)部分なので「文字列、数値、これをまとめられる配列がある」とだけ覚えてください。

次の記事

前の記事


この記事が気に入ったらサポートをしてみませんか?