CFScript - CFScript

CFScript is een uitbreiding van CFML op de ColdFusion platform. CFScript lijkt op JavaScript . Sommige ColdFusion ontwikkelaars liever omdat het minder visuele en typografische overhead dan gewone CFML.

Gebruik

Het wordt beschouwd als best practice om ColdFusion Components en alle business logica in CFScript te schrijven en te gebruiken CFML alleen in .cfm bestanden onder HTML .

Alle CFScript code moet worden opgenomen in een CFScript tagpaar als volgt, tenzij het binnen een pure script-gebaseerde ColdFusion Component.

<cfscript>
    xParam = 115;
    yParam = 200;
    color = 'FFCC99';
</cfscript>

Een eenvoudig voorbeeld van een functie :

<cfscript>
function Sum(a, b) {
    var sum = a + b;
    return sum;
}
</cfscript>

Een eenvoudig voorbeeld van een component in CFScript, die twee functies:

component {
    public void function foo() {
        WriteOutput("Method foo() called<br/>");
    }

    public function getString() {
        var x = "hello";
        return x;
    }
}

ColdFusion 11, Railo 4.1 of hoger, en Lucee 4.5+ beide doen hun best om volledig te ondersteunen cf-tags in CFScript. Hoewel er misschien niet direct vervangingen voor alle tags, is het vaak nog steeds mogelijk om de resultaten van een tag in het script te bereiken, maar via een andere syntax. Bijvoorbeeld, dit is hoe om een query in een variabele in CFScript krijgen zonder het schrijven van een UDF :

<cfscript>
    qGetData = new Query();
    qGetData .setDataSource('#APPLICATION.datasource#');
    qGetData .setSQL('SELECT column1, column2 FROM table WHERE 1');
    qDateResult = qGetData .Execute().getResult();
</cfscript>

Syntaxis

Omdat ColdFusion 8 is CFScript syntax afkortingen die in veel andere programmeertalen, zoals "++", "<=" en "+ =" ondersteund.

rekenkundige operators

operator Omschrijving
+ - * / Basic rekenkunde: Optellen, aftrekken, vermenigvuldigen en delen.

In sector, kan de rechter operand niet nul.

++ - Doen toenemen en afnemen. Verhogen of variabele verlagen.

Deze operatoren kunnen worden gebruikt voor pre-incrementeren of decrementeren (zoals bij x = i ++), waarbij de variabele wordt gewijzigd voordat het wordt gebruikt in de expressie. Ze kunnen ook worden gebruikt voor post-incrementeren of decrementeren (zoals bij x = i ++), waarbij de waarde wordt gewijzigd nadat deze is gebruikt in de uitdrukking. Indien de waarde van de variabele i aanvankelijk 7, bijvoorbeeld de waarde van x in x = ++ i 8 na evaluatie expressie, maar in x = i ++, de waarde van x 7. In beide gevallen is de waarde van i wordt 8.

Deze operators kunnen niet worden gebruikt met uitdrukkingen die functioneert omvatten, zoals in f (). A ++. Ook kunt u een uitdrukking te gebruiken, zoals - ++ x, maar --- x en +++ x fouten veroorzaken, omdat hun betekenissen zijn dubbelzinnig. U kunt haakjes gebruiken om de groep van de exploitanten, zoals in - (- x) of + (++ x), echter.

= + - = * = / =% = Samengestelde toewijzing operators. De variabele rechts wordt gebruikt als zowel een element van de expressie en het resultaat variabele. Dus de uitdrukking a + b = komt overeen met a = a + b.

Een expressie kan slechts één verbinding toewijzen hebben.

+ - Unaire rekenkunde: Stel het teken van een getal.
MOD of% Modulus: Breng de rest na een aantal wordt gedeeld door een deler. Het resultaat heeft hetzelfde teken als de deler. De waarde rechts van de operator moet een geheel getal zijn; een niet-numerieke waarde veroorzaakt een fout, en als een reëel getal opgeeft, ColdFusion negeert het breukdeel (bijvoorbeeld 11 MOD 4,7 3).
\ Integerdeling: Verdeel een geheel getal met een getal. Het resultaat is een geheel getal; bijvoorbeeld 9 \ 4 2. De rechteroperand kan niet nul
^ Machtsverheffen: Terugkeer het resultaat van een getal verheven tot een macht (exponent). Gebruik de caretteken (^) om het nummer uit de macht te scheiden; bijvoorbeeld 2 ^ 3 8. Real en negatieve getallen zijn toegestaan ​​voor zowel de basis en de exponent. Echter, enige uitdrukking die overeenkomt met een imaginair getal, bijvoorbeeld -1 ^ 0,5 geeft de string "-1. # IND. ColdFusion ondersteunt imaginaire of complexe getallen.

Comments

CFScript heeft twee vormen van reacties: enkele lijn en meerdere regels.

// 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. */

Proberen te vangen

try {
    throw(message="Oops", detail="xyz");
} catch (any e) {
    WriteOutput("Error: " & e.message);
    rethrow;
} finally {
    WriteOutput("I run even if no error");
}

instructie switch

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]);
}

VOOR IN Loop

struct = StructNew();
struct.one = "1";
struct.two = "2";
for (key in struct) {
    WriteOutput(key);
}
//OUTPUTS onetwo

Herhalingslus

x = 0;
while (x LT 5) {
    x = x + 1;
    WriteOutput(x);
}
// Outputs: 12345

Do / Terwijl Loop

x = 0;
do {
    x = x+1;
    WriteOutput(x);
} while (x LTE 0);
// Outputs: 1

Looping over een array

for (item in array) {
    doSomething(item);
}

Verschillen met JavaScript

Hoewel CFScript en JavaScript op elkaar lijken, ze hebben een aantal belangrijke verschillen. De volgende lijst identificeert CFScript die afwijken van de JavaScript:

  • CFScript gebruikt ColdFusion uitdrukkingen, die niet een superset of een subset van JavaScript-expressies. In het bijzonder, ColdFusion uitdrukkingen ondersteunen logische operatoren op en ColdFusion MOD of% bediener anders dan de overeenkomstige JavaScript% operator: in ColdFusion de operator doet gehele getallen en negeert breukdelen. ColdFusion uitdrukkingen ondersteunen ook de EQV, IMP, BEVAT, en doet operators die niet worden ondersteund in JavaScript bevatten.
  • Variabelendeclaraties (var trefwoord) worden alleen gebruikt in gebruikerseenheden functies en draden.
  • CFScript is niet hoofdlettergevoelig.
  • Alle verklaringen eindigen met een puntkomma, en regeleinden in de code worden genegeerd.
  • Opdrachten zijn uitspraken, niet uitdrukkingen, en kan daarom niet worden gebruikt in situaties die vereisen dat de beoordeling van de opdracht operatie.
  • JavaScript-objecten, zoals windowen document, zijn niet beschikbaar.
  • Alleen de ColdFusion server verwerkt CFScript. Er is geen client-side CFScript.

Referenties

Externe links