CFScript - CFScript
CFScript er en udvidelse af CFML på ColdFusion-platformen. CFScript ligner JavaScript . Nogle ColdFusion-udviklere foretrækker det, da det har mindre visuel og typografisk overhead end almindelig CFML.
Indhold
Anvendelse
Det betragtes som bedste praksis at skrive ColdFusion-komponenter og al forretningslogik i CFScript og kun bruge CFML i .cfm-filer blandt HTML .
Al CFScript-kode skal være indeholdt i et CFScript-tag-par som følger, medmindre den er inden for en ren script-baseret ColdFusion-komponent.
<cfscript>
xParam = 115;
yParam = 200;
color = 'FFCC99';
</cfscript>
Et simpelt eksempel på en funktion :
<cfscript>
function Sum(a, b) {
var sum = a + b;
return sum;
}
</cfscript>
Et simpelt eksempel på en komponent i CFScript, der indeholder to funktioner:
component {
public void function foo() {
WriteOutput("Method foo() called<br/>");
}
public function getString() {
var x = "hello";
return x;
}
}
ColdFusion 11, Railo 4.1+ og Lucee 4.5+ gør begge deres bedste for fuldt ud at understøtte cf tags i CFScript. Selvom der muligvis ikke er direkte substitutioner for alle tags, er det ofte stadig muligt at opnå resultaterne af et tag i script, men via en anden syntaks. For eksempel er det sådan, hvordan man får en forespørgsel til en variabel i CFSCRIPT uden at skrive en UDF :
<cfscript>
qGetData = new Query();
qGetData .setDataSource('#APPLICATION.datasource#');
qGetData .setSQL('SELECT column1, column2 FROM table WHERE 1');
qDateResult = qGetData .Execute().getResult();
</cfscript>
Syntaks
Siden ColdFusion 8 har CFScript understøttet syntaksforkortelser, der er almindelige i mange andre programmeringssprog, såsom "++", "<=" og "+ =".
Aritmetiske operatører
| Operatør | Beskrivelse |
|---|---|
| + - * / | Grundlæggende aritmetik: Tilføjelse, subtraktion, multiplikation og opdeling.
I opdelingen kan den rigtige operand ikke være nul. |
| ++ - | Forøgelse og nedgang. Forøg eller reducer variablen med en.
Disse operatorer kan bruges til forforøgelse eller dekrementering (som i x = ++ i), hvor variablen ændres, før den bruges i udtrykket. De kan også bruges til postforøgelse eller dekrementering (som i x = i ++), hvor værdien ændres, efter at den er brugt i udtrykket. Hvis værdien af variablen i oprindeligt er 7, er værdien af x i x = ++ i 8 efter ekspressionevaluering, men i x = i ++, er værdien af x 7. I begge tilfælde er værdien af jeg bliver 8. Disse operatører kan ikke bruges med udtryk, der involverer funktioner, som i f (). A ++. Du kan også bruge et udtryk som - ++ x, men --- x og +++ x forårsager fejl, fordi deres betydning er tvetydig. Du kan bruge parenteser til at gruppere operatørerne som i - (- x) eller + (++ x), dog. |
| + = - = * = / =% = | Operatører af sammensat tildeling. Variablen til højre bruges både som et element i udtrykket og som resultatvariablen. Udtrykket a + = b er således ækvivalent med a = a + b.
Et udtryk kan kun have en sammensat tildelingsoperatør. |
| + - | Uær aritmetik: Indstil tegnets tegn. |
| MOD eller% | Modul: Returner resten, efter at et tal er divideret med en divisor. Resultatet har det samme tegn som divisoren. Værdien til højre for operatøren skal være et heltal; Brug af en ikke-numerisk værdi forårsager en fejl, og hvis du angiver et reelt tal, ignorerer ColdFusion brøkdelen (for eksempel 11 MOD 4.7 er 3). |
| \ | Heltalinddeling: Del et heltal med et andet heltal. Resultatet er også et heltal; for eksempel 9 \ 4 er 2. Den rigtige operand kan ikke være nul |
| ^ | Eksponentiering: Returner resultatet af et tal hævet til en magt (eksponent). Brug caret-tegnet (^) til at adskille nummeret fra strømmen; for eksempel 2 ^ 3 er 8. Reelle og negative tal er tilladt for både basen og eksponenten. Imidlertid resulterer ethvert udtryk, der svarer til et imaginært tal, sådan -1 ^ .5 i strengen "-1. # IND. ColdFusion understøtter ikke imaginære eller komplekse tal. |
Kommentarer
CFScript har to former for kommentarer: enkelt linje og multiline.
// This is a single-line comment.
// This is a second single-line comment.
/* 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. */
Prøv / fangst
try {
throw(message="Oops", detail="xyz");
} catch (any e) {
WriteOutput("Error: " & e.message);
rethrow;
} finally {
WriteOutput("I run even if no error");
}
Skift erklæring
switch (car) {
case "Nissan":
WriteOutput("I own a Nissan");
break;
case "Toyota":
WriteOutput("I own a Toyota");
break;
default:
WriteOutput("I'm exotic");
}
looping
For Loop
for (i=1; i LTE ArrayLen(array); i=i+1) {
WriteOutput(array[i]);
}
FOR I Loop
struct = StructNew();
struct.one = "1";
struct.two = "2";
for (key in struct) {
WriteOutput(key);
}
//OUTPUTS onetwo
Mens Loop
x = 0;
while (x LT 5) {
x = x + 1;
WriteOutput(x);
}
// Outputs: 12345
Gør / mens løkken
x = 0;
do {
x = x+1;
WriteOutput(x);
} while (x LTE 0);
// Outputs: 1
Looping over en matrix
for (item in array) {
doSomething(item);
}
Forskelle fra JavaScript
Selvom CFScript og JavaScript er ens, har de flere centrale forskelle. Følgende liste identificerer CFScript-funktioner, der adskiller sig fra JavaScript:
- CFScript bruger ColdFusion-udtryk, som ikke er et supersæt eller en undergruppe af JavaScript-udtryk. Navnlig understøtter ColdFusion-udtryk ikke operatører i bitvis retning, og ColdFusion MOD- eller% -operatøren fungerer forskelligt fra den tilsvarende JavaScript% -operator: I ColdFusion udfører operatøren heltalearitmetik og ignorerer delvise dele. ColdFusion-udtryk understøtter også EQV, IMP, CONTAINS og Indeholder IKKE operatører, der ikke understøttes i JavaScript.
- Variable erklæringer (var nøgleord) bruges kun i brugerdefinerede funktioner og tråde.
- CFScript er ikke store og små bogstaver.
- Alle udsagn slutter med et semikolon, og linjeskift i koden ignoreres.
- Opgaver er udsagn, ikke udtryk, og kan derfor ikke bruges i situationer, der kræver evaluering af tildelingsoperationen.
- JavaScript-objekter, såsom
windowogdocument, er ikke tilgængelige. - Kun ColdFusion-serveren behandler CFScript. Der er ingen CFScript på klientsiden.