CFScript の演算子
CFScript 言語のシンタックスは他のスクリプト言語と似ており、同じ種類の要素を持っています。
CFScript の識別
<cfscript> タグと </cfscript> タグの間の領域が、CFScript の領域です。cfscript の領域内に他の CFML タグを含めることはできません。次に最小のスクリプトを示します。
<cfscript> a = 2; </cfscript>
変数
CFScript 変数は、数値、文字列、配列、クエリ、オブジェクトなど、任意の ColdFusion 型として使用できます。CFScript コードは、そのスクリプトが含まれているページにあるすべての変数を読み書きできます。これには、セッション変数、アプリケーション変数、サーバー変数など、すべての共有スコープが含まれます。
式と演算子
CFScript では、すべての CFML 式がサポートされています。CFML 式には、演算子(+、-、EQ など)や、すべての CFML 関数が含まれます。
いくつかの比較演算子は、CFScript でのみ使用でき、CFML タグでは使用できません。それらに対応する CFML 演算子は、CFScript でも使用できます。次の表に、CFScript でのみ使用できる演算子と、それに対応する CFML タグの演算子(CFScript でも使用できます)を示します。
|
CFML の演算子 |
CFScript の演算子 |
CFML の演算子 |
---|---|---|---|
== |
EQ |
! = |
NEQ |
< |
LT |
<= |
LTE |
> |
GT |
>= |
GTE |
CFML の式、演算子、および関数の詳細については、「式と # 記号の使用」を参照してください。
ステートメント
CFScript では、次のステートメントがサポートされています。
代入 |
for-in |
try-catch |
---|---|---|
関数呼び出し |
while |
function(関数定義) |
if-else |
do-while |
var(カスタム関数内のみ) |
switch-case-default |
break |
return(カスタム関数内のみ) |
for |
continue |
|
ステートメントには、次のルールが適用されます。
- ステートメントの終わりには、セミコロンを付けます。
- 改行は無視されます。単一のステートメントを複数の行に記述できます。
- 空白は無視されます。例えば、セミコロンの前にスペース文字があっても問題ありません。
- 複数のステートメントを 1 つの論理的なステートメントユニットにまとめるには、中括弧({})を使用します。
- 特に説明がない限り、ステートメントの本文では任意の ColdFusion 式を使用できます。
function、var、および return ステートメントの詳細については、CFScript でのコンポーネントと関数の定義を参照してください。
ステートメントブロック
中括弧({})は、複数の CFScript ステートメントをグループ化し、1 つのユニットまたはステートメントとして扱われるようにします。
このシンタックスを使用すると条件ステートメントでコードブロックを作成することができます。
例を次に示します。
if(score GT 0) { result = "positive"; Positives = Positives + 1; }
この例では、score が 0 よりも大きい場合に両方の代入ステートメントが実行されます。このステートメントがコードブロックに入っていない場合は、最初の行のみが実行されます。
中括弧のみを独立した行として記述する必要はありません。例えば、前述の例では、if ステートメントと同じ行に左括弧が置かれています。左括弧をどこに記述するかはプログラマによって様々です。ただし、少なくとも右括弧は独立した行に記述するほうが、コードが読みやすく、コードブロックが識別しやすくなります。
コメント
CFScript では、単一行と複数行の 2 つの形式のコメントが使用できます。
単一行コメントは、2 つのスラッシュ (//) で始まり、同じ行の行末で終わります。次に例を示します。
//これは単一行コメントです。//これは 2 番目の単一行コメントです。
複数行コメントは、/* マーカーで始まり、*/ マーカーまでコメントと見なされます。次に例を示します。
/*これは複数行コメントです。各行の先頭にコメント記号を付ける必要はありません。これはコメントの最後の行です。*/
コメントには、次のルールが適用されます。
コメントは、行頭から始める必要はありません。アクティブなコードと同じ行に、コメントを続けることができます。例えば、次の行は有効です。
MyVariable = 12; // MyVariable をデフォルト値に設定。
- 複数行コメントが終了した同じ行に、アクティブなコードを続けることもできます。例えば、よいコーディングスタイルではありませんが、次の行は有効です。
長いコメントの終わり */ foo = "bar";
- 次のように、複数行コメントを単一行に記述してもかまいません。
/*これは複数行形式を使用した単一行コメントです。*/
- コメント行の中に別の /* および */ マーカーをネストすることはできません。
- CFScript で CFML コメント(<!--- および --->)を使用することはできません。
JavaScript との相違点
CFScript と JavaScript は似ていますが、いくつかの重要な相違点があります。JavaScript と異なる CFScript の機能を、次に示します。
- CFScript の ColdFusion 式は、JavaScript 式のスーパーセットでもサブセットでもありません。特に、ColdFusion 式ではビット単位演算子がサポートされていません。また、ColdFusion の MOD 演算子または % 演算子は、JavaScript の % 演算子と動作が異なります。ColdFusion の演算子は、小数部分を無視して整数演算を行います。ColdFusion 式では、JavaScript でサポートされていない EQV、IMP、CONTAINS、および DOES NOT CONTAIN 演算子がサポートされています。
- 変数宣言(var キーワード)は、ユーザー定義関数およびスレッドでのみ使用します。
- CFScript では大文字と小文字が区別されません。
- すべてのステートメントはセミコロンで終わり、改行は無視されます。
- 代入式はステートメントであり、式ではありません。したがって、代入演算を評価する必要がある状況で代入式を使用することはできません。
- Window や Document などの JavaScript オブジェクトは利用できません。
- CFScript は、ColdFusion サーバーでのみ処理されます。クライアントサイド CFScript は存在しません。
CFScript の制限
CFScript の中で ColdFusion タグを使用することはできませんが、cfoutput などの ColdFusion タグの中に cfscript ブロックを含めることはできます。