Adobe ColdFusion 8

About CFScript

CFScript is a language within a language. It is a scripting language that is similar to JavaScript but is simpler to use. Also, unlike JavaScript, CFScript only runs on the ColdFusion server; it does not run on the client system. CFScript code can use all the ColdFusion functions and expressions, and has access to all ColdFusion variables that are available in the script's scope.

CFScript provides a compact and efficient way to write ColdFusion logic. Typical uses of CFScript include the following:

  • Simplifying and speeding variable setting
  • Building compact JavaScript-like flow control structures
  • Creating user-defined functions

Because you use functions and expressions directly in CFScript, you do not have to surround each assignment or function in a cfset tag. Also, CFScript assignments are often faster than cfset tags.

CFScript provides a set of decision and flow-control structures that are more familiar than ColdFusion tags to most programmers.

In addition to variable setting, other operations tend to be slightly faster in CFScript than in tags.

ColdFusion 5 and later releases let you use CFScript to create user-defined functions, or UDFs (also known as custom functions). You call UDFs in the same manner that you call standard ColdFusion functions. UDFs are to ColdFusion built-in functions what custom tags are to ColdFusion built-in tags. Typical uses of UDFs include data manipulation and mathematical calculation routines.

You cannot include ColdFusion tags in CFScript. However, a number of functions and CFScript statements are equivalent to commonly used tags. For more information, see CFScript functional equivalents to ColdFusion tags.

Comparing tags and CFScript

The following examples show how you can use CFML tags and CFScript to do the same thing. Each example takes data submitted from a form and puts it in a structure; if the form does not have a last name and department field, it displays a message.

Using CFML tags

<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>

Using 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>