CFScript - CFScript
CFScript er en utvidelse av CFML på ColdFusion-plattformen. CFScript ligner JavaScript . Noen ColdFusion-utviklere foretrekker det siden det har mindre visuelt og typografisk overhead enn vanlig CFML.
innhold
bruk
Det anses som beste praksis å skrive ColdFusion-komponenter og all forretningslogikk i CFScript og å bruke CFML bare i .cfm-filer blant HTML .
All CFScript-kode må være inneholdt i et CFScript-kodepar som følger, med mindre den er innenfor en ren skriptbasert ColdFusion-komponent.
<cfscript>
xParam = 115;
yParam = 200;
color = 'FFCC99';
</cfscript>
Et enkelt eksempel på en funksjon :
<cfscript>
function Sum(a, b) {
var sum = a + b;
return sum;
}
</cfscript>
Et enkelt eksempel på en komponent i CFScript, som inneholder to funksjoner:
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+ gjør begge sine beste for å fullt ut støtte CF-koder i CFScript. Selv om det kanskje ikke er direkte erstatninger for alle tagger, er det ofte fremdeles mulig å oppnå resultatene av en tag i script, men via en annen syntaks. Slik kan du for eksempel få en spørring til en variabel i CFSCRIPT uten å 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>
syntax
Siden ColdFusion 8 har CFScript støttet syntaksforkortelser som er vanlige i mange andre programmeringsspråk, for eksempel "++", "<=" og "+ =".
Aritmetiske operatører
| Operatør | Beskrivelse |
|---|---|
| + - * / | Grunnleggende aritmetikk: Addition, subtraksjon, multiplikasjon og deling.
I divisjon kan ikke høyre operand være null. |
| ++ - | Økning og nedgang. Øk eller reduser variabelen med en.
Disse operatørene kan brukes til forhåndsinnheving eller dekrementering (som i x = ++ i), der variabelen endres før den brukes i uttrykket. De kan også brukes til etterøkning eller dekrementering (som i x = i ++), der verdien endres etter at den er brukt i uttrykket. Hvis verdien til variabelen i utgangspunktet er 7, er verdien av x i x = ++ i 8 etter ekspresjonsevaluering, men i x = i ++ er verdien av x 7. I begge tilfeller er verdien av jeg blir 8. Disse operatørene kan ikke brukes med uttrykk som involverer funksjoner, som i f (). A ++. Du kan også bruke et uttrykk som - ++ x, men --- x og +++ x forårsaker feil, fordi deres betydning er tvetydig. Du kan bruke parenteser for å gruppere operatørene, som i - (- x) eller + (++ x), men. |
| + = - = * = / =% = | Operatører av sammensatte tildelinger. Variabelen til høyre brukes både som et element i uttrykket og resultatvariabelen. Dermed er uttrykket a + = b ekvivalent med a = a + b.
Et uttrykk kan bare ha en sammensatt tildelingsoperatør. |
| + - | Unary aritmetic: Sett tegnet til et nummer. |
| MOD eller% | Modul: Returner resten etter at et tall er delt med en divisor. Resultatet har samme tegn som deler. Verdien til høyre for operatøren skal være et helt tall; bruker en ikke-numerisk verdi forårsaker en feil, og hvis du spesifiserer et reelt tall, ignorerer ColdFusion brøkdelen (for eksempel 11 MOD 4.7 er 3). |
| \ | Heltalldeling: Del et heltall med et annet heltall. Resultatet er også et helt tall; for eksempel 9 \ 4 er 2. Høyre operand kan ikke være null |
| ^ | Eksponentiering: Returner resultatet av et tall hevet til en kraft (eksponent). Bruk caret-tegnet (^) for å skille tallet fra strømmen; for eksempel 2 ^ 3 er 8. Reelle og negative tall er tillatt for både basen og eksponenten. Imidlertid gir ethvert uttrykk som tilsvarer et tenkt tall, slik -1 ^ .5 strengen "-1. # IND. ColdFusion støtter ikke imaginære eller komplekse tall. |
kommentarer
CFScript har to former for kommentarer: en linje og flere linjer.
// 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");
}
Bytt uttalelse
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 IN 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
Gjør / mens sløyfe
x = 0;
do {
x = x+1;
WriteOutput(x);
} while (x LTE 0);
// Outputs: 1
Looping over en matrise
for (item in array) {
doSomething(item);
}
Forskjeller fra JavaScript
Selv om CFScript og JavaScript er like, har de flere viktige forskjeller. Følgende liste identifiserer CFScript-funksjoner som skiller seg fra JavaScript:
- CFScript bruker ColdFusion-uttrykk, som ikke er et supersett eller en undergruppe av JavaScript-uttrykk. Spesielt støtter ikke ColdFusion-uttrykk bitvise operatører, og ColdFusion MOD- eller% -operatøren opererer annerledes enn den tilsvarende JavaScript% -operatøren: I ColdFusion utfører operatøren heltall aritmetikk og ignorerer brøkdeler. ColdFusion-uttrykk støtter også EQV, IMP, CONTAINS og INNHOLDER IKKE operatører som ikke støttes i JavaScript.
- Variable deklarasjoner (var nøkkelord) brukes bare i brukerdefinerte funksjoner og tråder.
- CFScript er ikke store og små bokstaver.
- Alle utsagn slutter med et semikolon, og linjeskift i koden blir ignorert.
- Oppdrag er uttalelser, ikke uttrykk, og kan derfor ikke brukes i situasjoner som krever evaluering av oppgaveoperasjonen.
- JavaScript-objekter, for eksempel
windowogdocument, er ikke tilgjengelige. - Bare ColdFusion-serveren behandler CFScript. Det er ingen CFScript på klientsiden.