JScript の配列と WScript.Arguments
知っている人は当たり前なのだろうが、よく間違えるので備忘録として残しておく。
こんな風に配列長を求める JScript を書いて動かしてみる。
test.js
// 引数を取得 WScript.Echo('引数の数: ' + WScript.Arguments.Length); WScript.Echo('引数1: ' + WScript.Arguments(0)); WScript.Echo('引数2: ' + WScript.Arguments(1)); // 空配列に値を追加 var ary = []; WScript.Echo('追加前: ' + ary.Length); ary.push('foo'); WScript.Echo('一つ目追加: ' + ary.Length); ary.push('bar'); WScript.Echo('二つ目追加: ' + ary.Length); WScript.Echo('一つ目: ' + ary[0]); WScript.Echo('二つ目: ' + ary[1]);出力
c:\Users\toasted.laver\Downloads>cscript /nologo test.js aaa bbb 引数の数: 2 引数1: aaa 引数2: bbb 追加前: undefined 一つ目追加: undefined 二つ目追加: undefined 一つ目: foo 二つ目: bar
Length が定義されていない と言われるが、 WScript.Arguments.Length の方はちゃんと想定の値を返している。
'L' を小文字 'l' すると意図通り動くようになる。
ary.Length ⇒ ary.length
出力
追加前: 0 一つ目追加: 1 二つ目追加: 2 一つ目: foo 二つ目: bar
恐らく、Arguments は Windows の組込みオブジェクトなので大文字でも小文字でも動くようになっている1 が JScript 言語で定義されている配列はそうはいかない。
てことだろう。知らんけどw
まとめ
大文字 WScript.Arguments.Length OK ary.Length NG 小文字 WScript.Arguments.length OK ary.length OK
Footnotes:
そもそも、 Arguments は配列じゃないしねw
Created: 2026-05-01 金 15:03


