構文 | 効果 |
if (expression) statement1 [ else statement2 ] | 式を評価します。true の場合、ステートメント1 を実行し、そうでない場合は ステートメント2 が提供されたときに ステートメント2 を実行します。 式が非ブール型値を返す場合、この値はconverted to a booleanされます。 例: if (a == b) writeln("They are equal") else writeln("They are not equal") if (s.indexOf("a") < 0) { write("The string ", s) writeln(" doesn't contains the letter a") } |
構文 | 効果 |
while (式) ステートメント | 式が true である限り、ステートメントを繰り返し実行します。 ステートメントの各実行の前にテストが行われます。 式が非ブール型値を返す場合、この値はconverted to a booleanされます。 例: while (a*a < b) a = a+1 while (s.length) { r = s.charAt(0)+r s = s.substring(1) } |
for ( [ 初期化 ]; [ 条件 ] ; [ 更新 ] ) ステートメント 条件と更新は式、初期化は式または以下の形式です。 var 変数 = 式 | 存在する場合に、初期化 を一度評価します。 値は無視されます。 次の形式がある場合: var 変数 = 式 変数がローカル変数として宣言され、変数ステートメント内で初期化されます。 次に、条件が true である限り、ステートメントを繰り返し実行します。 条件が省略されている場合、true とみなされて無限ループになります。 条件が非ブール型値を返す場合、この値はconverted to a booleanされます。 存在する場合、ステートメントの後、条件の前にループを通過するたびに更新が評価されます。 値は無視されます。 例: for (var i=0; i < a.length; i++) { sum = sum+a[i] prod = prod*a[i] } |
for ([ var ] 変数 in 式) ステートメント | 式の値のプロパティーで反復します。 各プロパティーについて、変数は、このプロパティーを表す文字列に設定され、ステートメントが一度実行されます。 たとえば、次の関数では任意の値を取り、すべてのプロパティーとそれらの値を表示します。 function printProperties(v) { for (var p in v) writeln(p, " -> ", v[p]) } for..in ステートメントによって列挙されるプロパティーには、値がfunction valueの通常のプロパティーであるメソッド・プロパティーが含まれます。 たとえば、呼び出し printProperties("foo") では以下を表示します。 length -> 3 toString -> [primitive method toString] substring -> [primitive method substring] charAt -> [primitive method charAt] etc. arraysの数値プロパティーだけは、for..in ループによって列挙されません。 |
break | 現在の while、for または for..in ループを終了し、そのループの直後にステートメントの実行を続けます。 このステートメントはループの外では使用できません。 例: while (i < a.length) { if (a[i] == "foo") { foundFoo = true break } i = i+1 } // Execution continues here |
continue | 現在の while、for または for..in ループを停止し、次の反復を使ってループの実行を続けます。 このステートメントはループの外では使用できません。 例: for (var i=0; i < a.length; i++) { if (a[i] < 0) continue writeln("A positive number: ", a[i]) } |
構文 | 効果 |
var decl1, ..., decln 各 decli には次の形式があります。 変数 [ = 式 ] | 例: var x var name = "Joe" var average = (a+b)/2, sum, message="Hello" |
関数定義内の var | 関数定義内で var を使う場合、宣言された変数は関数に対してローカルで、それらの変数は同じ名前を持つグローバル変数を隠します。実際に、それらの変数は関数引数と同じステータスを持ちます。 たとえば、次のプログラムにおいて、変数 sum および res は、引数 a および b と同様に、average 関数に対してローカルになります。したがって、average が呼び出されると、同じ名前を持つグローバル変数がある場合、そのグローバル変数は関数が終了するまで一時的に隠されます。 function average(a, b) { var sum = a+b var res = sum/2 return res } 関数本体の任意の場所で var を使って宣言された変数には、関数全体の範囲があります。 これは、C または C++ のローカル変数範囲とは異なります。 たとえば、以下の関数で、if ステートメントの最初の分岐で宣言された変数 res は、他の分岐および return ステートメントで使われます。 function max(x, y) { if (x > y) { var res = x } else { res = y } return res } |
関数定義外の var | var が関数定義の外、つまり関数定義と同じレベルで使われる場合、宣言された変数は現在のプログラム・ユニットに対してローカルになります。 プログラム・ユニットとは、全体とみなされるステートメントのグループです。ただし、プログラム・ユニットの正確な定義は、Rogue Wave Script が組み込まれているアプリケーションによって異なります。 通常、アプリケーションによってロードされたスクリプト・ファイルは、プログラム・ユニットとして扱われます。 この場合、ファイルのトップ・レベルで var を使って宣言された変数は、このファイルに対してローカルになり、それらの変数は同じ名前のグローバル変数をすべて隠します。 たとえば、ファイルに以下のプログラムが含まれる場合を考えてみましょう。 var count = 0 function NextNumber() { count = count+1 return count } このファイルがロードされると、関数 NextNumber はアプリケーション全体に対して表示可能になります。また、count はロードしたプログラム・ユニットに対してローカルになり、内部のみで表示可能になります。 同じ範囲で同じローカル変数を宣言するとエラーになります。 たとえば、以下のプログラムは、res が 2 回宣言されているため正しくありません。 function max(x, y) { if (x > y) { var res = x } else { var res = y // Error } return res } |
構文 | 効果 |
[ static ] function 名前(v1,...,vn) { ステートメント } | 特定のパラメーターおよび本体を持つ関数の名前を定義します。 関数定義はトップ・レベルのみで実行されるため、関数定義のネストはできません。 関数が呼び出されると、変数 v1、...、vn は対応する引数値に設定されます。 次に、ステートメントが実行されます。 return ステートメントに達すると、関数は特定の値を返します。または、ステートメントが実行された後に、関数は undefined 値を返します。 実際の引数の数とパラメーターの数は一致する必要はありません。 パラメーターよりも引数の方が少ない場合、残りのパラメーターは未定義値に設定されます。パラメーターよりも引数の方が多い場合、余った引数は無視されます。 パラメーターのメカニズムとは無関係に、引数キーワードを使って関数引数を読み出すことができます。 var 名前 = 特定の関数値 関数値は、変数から取得したり、他のタイプの値のように操作することができます。 たとえば、以下のプログラムでは関数 add を定義し、その値を変数 sum に代入します。これにより、add と sum は同じ関数の類義語になります。 function add(a, b) { return a+b } sum = add static キーワードを使わない場合、定義した関数はグローバルで、アプリケーション全体からアクセスすることができます。 static キーワードを使う場合、var キーワードを使って 名前を宣言したときのように、関数は現在のプログラム・ユニットに対してローカルになります。 var 名前 = 特定の関数値 |
return [ 式 ] |
構文 | 効果 |
with (式) ステートメント | 式を評価してから、デフォルト値として一時的に設定した式の値を使ってステートメントを実行します。 ステートメントの識別子の名前の参照を評価する際、この識別子では最初にデフォルト値のプロパティーを検索します。デフォルト値にそのようなプロパティーがない場合、名前は通常の変数として扱われます。 たとえば、以下のプログラムでは、識別子 length が文字列 "abc" の length プロパティーとしてみなされるため、"The length is 3 (長さは 3 です)" と表示されます。 with ("abc") { writeln("The length is ", length) } With ステートメントはネストできます。この場合、識別子の参照は、連続するデフォルト値で一番内側から一番外側の with ステートメントに向かって検索されます。 |