Content deleted Content added
No edit summary |
SimLibrarian (talk | contribs) m rm contraction Tags: Mobile edit Mobile app edit iOS app edit App section source |
||
(30 intermediate revisions by 16 users not shown) | |||
Line 1:
{{
'''CFScript''' is an extension of [[ColdFusion Markup Language|CFML]] on the ColdFusion platform. CFScript resembles [[JavaScript]]. Some ColdFusion [[Software Developers|developers]] prefer it since it has less visual and typographical overhead than ordinary CFML
== Usage ==
Unless it is within a pure script-based ColdFusion Component, all CFScript code must be contained within a CFScript tag pair as follows:
<syntaxhighlight lang="cfm">
<cfscript>
</cfscript>
</syntaxhighlight>
A simple example of a [[Subroutine|function]]:
<syntaxhighlight lang="cfm">
<cfscript>
function Sum(a, b) {
var sum = a + b;
return sum;
}
</cfscript>
</syntaxhighlight>
<syntaxhighlight lang="javascript">
public void function foo()
WriteOutput("Method foo() called
}
public function getString()
var x = "hello";
return x;
}
}
</syntaxhighlight>
While there may not be direct substitutions for all tags, it is often still possible to achieve the results of a tag in script, but via a different syntax. For example, this is how to get a query into a variable in CFSCRIPT without writing a [[User-defined function|UDF]]:
<syntaxhighlight lang="cfm">
<cfscript>
</cfscript
</syntaxhighlight>
== Syntax ==
Since
=== Arithmetic operators ===
{| class="wikitable"
|-
! Operator !! Description
|-
| + - * / || Basic arithmetic: Addition, subtraction, multiplication, and division.
In division, the right operand cannot be zero.
|-
| ++ -- || Increment and decrement. Increase or decrease the variable by one.
These operators can be used for pre-incrementing or decrementing (as in x = ++ i), where the variable is changed before it is used in the expression. They can also be used for post-incrementing or decrementing (as in x = i++), where the value is changed after it is used in the expression. If the value of the variable i is initially 7, for example, the value of x in x = ++i is 8 after expression evaluation, but in x=i++, the value of x is 7. In both cases, the value of i becomes 8.
These operators cannot be used with expressions that involve functions, as in f().a++. Also, you can use an expression such as -++x, but ---x and +++x cause errors, because their meanings are ambiguous. You can use parentheses to group the operators, as in -(--x) or +(++x), however.
|-
| += -= *= /= %= || Compound assignment operators. The variable on the right is used as both an element in the expression and the result variable. Thus, the expression a += b is equivalent to a = a +b.
An expression can have only one compound assignment operator.
|-
| + - || Unary arithmetic: Set the sign of a number.
|-
| MOD or % || Modulus: Return the remainder after a number is divided by a divisor. The result has the same sign as the divisor. The value to the right of the operator should be an integer; using a non-numeric value causes an error, and if you specify a real number, ColdFusion ignores the fractional part (for example, 11 MOD 4.7 is 3).
|-
| \|| Integer division: Divide an integer by another integer. The result is also an integer; for example, 9\4 is 2. The right operand cannot be zero
|-
| ^|| Exponentiation: Return the result of a number raised to a power (exponent). Use the caret character (^) to separate the number from the power; for example, 2^3 is 8. Real and negative numbers are allowed for both the base and the exponent. However, any expression that equates to an imaginary number, such -1^.5 results in the string "-1.#IND. ColdFusion does not support imaginary or complex numbers.
|}
=== Comments ===
CFScript has two forms of comments: single line and multiline.
<syntaxhighlight lang="javascript">
// This is a single-line comment.
// This is a second single-line comment.
</syntaxhighlight>
<syntaxhighlight lang="javascript">
/* This is a multiline comment.
You do not need to start each line with a comment indicator.
This line is the last line in the comment. */
</syntaxhighlight>
=== Try / catch ===
<syntaxhighlight lang="javascript">
try {
throw(message="Oops", detail="xyz");
} catch (any e) {
WriteOutput("Error: " & e.message);
rethrow;
} finally {
WriteOutput("I run even if no error");
}
</syntaxhighlight>
=== Switch statement ===
<syntaxhighlight lang="javascript">
switch (car) {
case "Nissan":
WriteOutput("I own a Nissan");
break;
case "Toyota":
WriteOutput("I own a Toyota");
break;
default:
WriteOutput("I'm exotic");
}
</syntaxhighlight>
=== Looping ===
==== For loop ====
<syntaxhighlight lang="javascript">
for (i=1; i <= ArrayLen(array); i=i+1) {
WriteOutput(array[i]);
}
</syntaxhighlight>
==== FOR IN Loop ====
<syntaxhighlight lang="javascript">
struct = StructNew();
struct.one = "1";
struct.two = "2";
for (key in struct) {
WriteOutput(key);
}
//OUTPUTS onetwo
</syntaxhighlight>
==== While loop ====
<syntaxhighlight lang="javascript">
x = 0;
while (x < 5) {
x = x + 1;
WriteOutput(x);
}
// Outputs: 12345
</syntaxhighlight>
==== Do / while loop ====
<syntaxhighlight lang="javascript">
x = 0;
do {
x = x + 1;
WriteOutput(x);
} while (x <= 0);
// Outputs: 1
</syntaxhighlight>
==== Looping over an array ====
<syntaxhighlight lang="javascript">
for (item in array) {
doSomething(item);
}
</syntaxhighlight>
== Differences from JavaScript ==
Although CFScript and JavaScript are similar, they have several key differences. The following list identifies CFScript features that differ from JavaScript:
* CFScript uses ColdFusion
*[[Variable declaration|Variable declarations]] (var keyword) are only used in user-defined functions and threads.
* CFScript is not case sensitive.
* All statements end with a semicolon, and line breaks in the code are ignored.
* Assignments are statements, not expressions, and therefore cannot be used in situations that require evaluating the assignment operation.
* JavaScript objects, such as
* Only the ColdFusion server processes CFScript. There is no client-side CFScript.
== References ==
{{Reflist}}
== External links ==
* [http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7feb.html Extending ColdFusion Pages with CFML Scripting - Adobe]
* [https://helpx.adobe.com/coldfusion/developing-applications/the-cfml-programming-language/extending-coldfusion-pages-with-cfml-scripting.html]
{{DEFAULTSORT:Cfscript}}
[[Category:CFML programming language]]
[[Category:Scripting languages]]
|