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.

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 windowog document, er ikke tilgjengelige.
  • Bare ColdFusion-serveren behandler CFScript. Det er ingen CFScript på klientsiden.

referanser

Eksterne linker