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.

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 windowog document, er ikke tilgængelige.
  • Kun ColdFusion-serveren behandler CFScript. Der er ingen CFScript på klientsiden.

Referencer

eksterne links