t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

仕事がはかどるJavaScript活用術を購入

書店で前から気になっていた書籍を購入した。

Windowsは「Windows Scriptng Host(WSH)」という仕組みでスクリプト言語から操作できる。どちらかといえばVBScriptで対応するほうが多いが、JavaScriptで書くこともできる。

これまでVBAIE操作したり、自分のWebサイトで共通メニューを表示させたりするのにJavaScriptを使用したことがあるが、私はWeb開発者ではないので普段は専らVBAかVBSを作成している。

JavaScriptも使わないと忘れてしまうし、きちんと学ぶにはやはり「普段使い」が重要かと思って、日々の業務で使えそうなWSHをあえてJavaScriptで書いてみようと思ったというのが購入の経緯である。

なお、この書籍はJavaScriptの基本の部分は申し訳程度にしか書かれていないので、他言語でひととおりプログラムを触った人向けかと思う。

さて、読み進めているうちに、VBScriptとはずいぶん違うなと感じた。

まず次のVBSプログラム。

Dim a
a = 10
WScript.Echo(a)

JavaScriptなら変数宣言と代入を一度に済ませられる。

var a = 10;
WScript.echo(a);

また、VBSではWSCRIPTと書いても、wscriptと書いても同じように実行できるのに対し、JavaScriptではWScriptときちんと定められた形で書かないとエラーになる。

次に配列を見てみよう。VBSでは単純に変数名に丸カッコを付けて宣言する。

Dim a(5)
a(0) = 10
Wscript.Echo(a(0))

JavaScriptでは配列はArrayオブジェクトとして定義されているので、インスタンス化するためのnewが必要になる。
見た目にも、添え字を囲うのに角カッコが使われている点が異なる。この辺はCの血筋である。

var a = new Array();
a[0] = 10;
WScript.echo(a[0]);

次にFor Each文の挙動を見てみる。
以下のプログラムは、aの中身を順に出力する。

Dim a(5), x
a(0) = 10
a(1) = 11
a(2) = 12
a(3) = 13
a(4) = 14
a(5) = 15
For Each x In a
	Wscript.Echo(x)
Next

同じようにJavaScriptで書いてみると、

var a = new Array();
a[0] = 10;
a[1] = 11;
a[2] = 12;
a[3] = 13;
a[4] = 14;
a[5] = 15;
for (var x in a) {
	WScript.echo(x);
}

なんとこちらは0~5が出力される。
xに入るのはaの中身ではなく、添え字なのだ。

aの中身を出したかったら、WScript.echo(a[x]);と書かなければいけない。

と思ったらfor each文は別であるようだ。しかし配列には使用できず、最新の企画ではfor eachは廃止され、for of文なるものが存在するとのこと。ただWSHで使用されているJavaScript(JScript)では使えるのかどうか不明。とりあえず配列に対して試してみたが、私の環境ではうまく動かなかった。
developer.mozilla.org

とまぁ、使える文法や機能にも色々と違いがあるので、これはこれで面白い。
しばらく家で遊んでみて、仕事で使えそうなら、個人的な作業用スクリプトJavaScriptで書いてみようかと思う。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。