CFScript: Difference between revisions

Content deleted Content added
Doggum (talk | contribs)
m rm contraction
Tags: Mobile edit Mobile app edit iOS app edit App section source
 
(27 intermediate revisions by 16 users not shown)
Line 1:
{{UnderlinkedMore citations needed|date =JanuaryNovember 20132006}}
{{refimprove|date =November 2006}}
 
'''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; It is considered best practice to write Coldfusion Components and all business logic in CFScript and to use CFML only in .cfm{{Clarify|reason=|date=March files amongst HTML.2020}}
 
== 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">
All CFScript code must be contained within a CFScript tag pair, as follows:
<pre>
<cfscript>
xParam = 115;
yParam = 200;
color = 'FFCC99';
</cfscript>
</syntaxhighlight>
</pre>
 
A simple example of a [[Subroutine|function]]:
A Simple function example.
<syntaxhighlight lang="cfm">
<pre>
<cfscript>
function Sum(a, b) {
var sum = a + b;
return sum;
}
</cfscript>
</syntaxhighlight>
</pre>
 
SimpleA componentsimple example of a component in cfscriptCFScript, containing two functionfunctions:
<syntaxhighlight lang="javascript">
<pre>
component {
public void function foo(){ {
WriteOutput("Method foo() called<nowiki><br></nowiki>");
}
 
public function getString(){ {
var x = "hello";
return x;
}
}
</syntaxhighlight>
</pre>
 
ColdfusionColdFusion 11, and [[Railo]] 4.1+, and [[Lucee]] 4.5+ both do their best to fully support cf tags in cfscriptCFScript.
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">
<pre>
<cfscript>
qGetData = new Query();
qGetData .setDataSource('#APPLICATIONApplication.datasource#');
qGetData .setSQL('SELECT column1, column2 FROM table WHERE 1');
qDateResult = qGetData .Execute().getResult();
</cfscript></pre>
</syntaxhighlight>
 
== Syntax ==
 
Since ColdFusion 8, CFScript has supported [[Syntax (programming languages)|syntax]] abbreviations that are common in many other programming languages, such as "++", "<=" and "+=".<ref>{{Cite web|url=https://www.bennadel.com/blog/741-learning-coldfusion-8-all-hail-the-new-operator.htm|title=Learning ColdFusion 8: All Hail The New ++ Operator|last=Nadel|first=Ben|date=May 31, 2007|website=|archive-url=|archive-date=|access-date=}}</ref>
==Syntax==
 
Since Coldfusion 8 cfscript has supported syntax abbreviations that are common in many other programming languages, such as "++", "<=" and "+=".<ref>Nadel, Ben. http://www.bennadel.com/blog/741-Learning-ColdFusion-8-All-Hail-The-New-Operator.htm</ref>
=== Arithmetic operators ===
{| class="wikitable"
Line 82:
=== Comments ===
CFScript has two forms of comments: single line and multiline.
<syntaxhighlight lang="javascript">
<pre>
// This is a single-line comment.
// This is a second single-line comment.
</syntaxhighlight>
</pre>
 
<syntaxhighlight lang="javascript">
<pre>
/* 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>
</pre>
 
=== 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 expressions[[Expression (computer science)|expression]], which are not a superset or a subset of JavaScript expressions. In particular, ColdFusion expressions do not support [[Bitwise operation|bitwise operators]], and the ColdFusion MOD or % operator operates differently from the corresponding JavaScript % operator: In ColdFusion, the operator does integer arithmetic and ignores fractional parts. ColdFusion expressions also support the EQV, IMP, CONTAINS, and DOES NOT CONTAIN operators that are not supported in JavaScript.
*[[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 Window<code>window</code> and Document<code>document</code>, are not available.
* Only the ColdFusion server processes CFScript. There is no client-side CFScript.
 
== References ==
 
==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]]
 
 
{{Compu-lang-stub}}