最終更新日 :
2022年2月9日
|
次にも適用 : ColdFusion
CFScript は言語内の言語です。JavaScript に似たスクリプト言語ですが、JavaScript よりも簡単に使用できます。また、JavaScript と異なり、CFScript は ColdFusion サーバーでのみ動作し、クライアントシステムでは動作しません。CFScript コードでは、ColdFusion のすべての関数および 式 を使用でき、そのコードのスコープで使用できるすべての ColdFusion 変数にアクセスできます。
CFScript を使用すると、ColdFusion のロジックを簡潔かつ効果的に記述できます。CFScript は、次のような目的でよく使用されます。
- 変数設定の簡略化と高速化
- JavaScript に似たコンパクトなフロー制御構造の構築
- ユーザー定義関数の作成
CFScript では、関数や式を直接使用できるので、それぞれの代入式や関数を cfset タグで囲む必要はありません。また、多くの場合、 cfset タグで処理するページのみに適用されます。
CFScript では、多くのプログラマにとって ColdFusion タグよりも馴染みのある、一連の決定構造やフロー制御構造が使用できます。
変数 設定だけでなく、その他のオペレーションでも、タグよりも CFScript の方が若干速くなる傾向があります。
CFScript を使用して、ユーザー定義関数つまり UDF (カスタム関数とも呼ばれます)を作成することができます。UDF は、標準の ColdFusion 関数と同じ方法で呼び出すことができます。ColdFusion のビルトインタグにない機能をカスタムタグで作成できるのと同様に、ColdFusion のビルトイン関数にない機能を UDF で作成することができます。UDF は、データ操作ルーチンや数学演算ルーチンを作成する場合などによく使用されます。
CFScript の中で ColdFusion タグを使用することはできませんが、それらに相当する関数や CFScript ステートメントが用意されています。詳しくは、ColdFusion 9 での言語の機能強化の「タグに相当する CFScript 機能」を参照してください。
タグと CFScript の比較
CFML タグと CFScript で同じ処理を記述する例を次に示します。それぞれの例では、フォームから送信されたデータを取得して、構造体に格納しています。姓フィールドまたは部門フィールドが入力されていない場合は、メッセージを表示します。
CFML タグを使用する場合
<cfif IsDefined("Form.submit")> <cfif (Form.lastname NEQ "") AND (Form.department NEQ "")> <cfset employee=structnew()> <cfset employee.firstname=Form.firstname> <cfset employee.lastname=Form.lastname> <cfset employee.email=Form.email> <cfset employee.phone=Form.phone> <cfset employee.department=Form.department> <cfoutput> Adding #Form.firstname# #Form.lastname#<br> </cfoutput> <cfelse> <cfoutput> You must enter a Last Name and Department.<br> </cfoutput> </cfif> </cfif>
CFScript を使用する場合
<cfscript> if (IsDefined("Form.submit")) { if ((Form.lastname NEQ "") AND (Form.department NEQ "")) { employee=StructNew(); employee.firstname=Form.firstname; employee.lastname=Form.lastname; employee.email=Form.email; employee.phone=Form.phone; employee.department=Form.department; WriteOutput("Adding #Form.firstname# #Form.lastname# <br>"); } else WriteOutput("You must enter a Last Name and Department.<br>"); } </cfscript>