CFScript - CFScript

CFScript je rozšíření CFML na platformě ColdFusion. CFScript připomíná JavaScript . Někteří vývojáři ColdFusion to dávají přednost, protože má méně vizuální a typografické režie než běžné CFML.

Používání

Doporučuje se psát komponenty ColdFusion a veškerou obchodní logiku do jazyka CFScript a používat CFML pouze v souborech .cfm mezi HTML .

Veškerý kód CFScript musí být obsažen v páru značek CFScript následujícím způsobem, pokud není v čisté komponentě ColdFusion založené na skriptu.

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

Jednoduchý příklad funkce :

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

Jednoduchý příklad komponenty v CFScript, obsahující dvě funkce:

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

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

ColdFusion 11, Railo 4.1+ a Lucee 4.5+ se snaží plně podporovat CF tagy v CFScript. I když nemusí existovat přímé náhrady všech značek, je často stále možné dosáhnout výsledků značky ve skriptu, ale pomocí jiné syntaxe. Takto například můžete získat dotaz do proměnné v CFSCRIPT bez zápisu UDF :

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

Syntax

Od verze ColdFusion 8 podporuje CFScript syntaxe zkratek, které jsou běžné v mnoha jiných programovacích jazycích, například „++“, „<=“ a „+ =“.

Aritmetické operátory

Operátor Popis
+ - * / Základní aritmetika: Sčítání, odčítání, násobení a dělení.

V rozdělení nemůže být pravý operand nulový.

++ - Přírůstek a úbytek. Zvýšení nebo snížení proměnné o jednu.

Tyto operátory lze použít pro předběžné zvýšení nebo snížení (jako v x = ++ i), kde se proměnná změní, než se použije ve výrazu. Lze je také použít pro přírůstek nebo zmenšení (jako v x = i ++), kde se hodnota po použití ve výrazu změní. Pokud je hodnota proměnné i zpočátku 7, například hodnota x v x = ++ i je 8 po vyhodnocení výrazu, ale v x = i ++ je hodnota x 7. V obou případech je hodnota i se stane 8.

Tyto operátory nelze použít s výrazy, které zahrnují funkce, jako v f (). A ++. Můžete také použít výraz jako - ++ x, ale --- x a +++ x způsobují chyby, protože jejich významy jsou nejednoznačné. K seskupení operátorů můžete použít závorky, například v - (- x) nebo + (++ x).

+ = - = * = / =% = Složené operátory přiřazení. Proměnná vpravo se používá jako prvek ve výrazu i jako výsledná proměnná. Výraz a + = b je tedy ekvivalentní výrazu a = a + b.

Výraz může mít pouze jednoho operátora složeného přiřazení.

+ - Unární aritmetika: Nastavte znaménko čísla.
MOD nebo% Modul: Vraťte zbytek poté, co je číslo rozděleno dělitelem. Výsledek má stejné znaménko jako dělitel. Hodnota napravo od operátoru by měla být celé číslo; použití nečíselné hodnoty způsobí chybu a pokud zadáte skutečné číslo, ColdFusion ignoruje zlomkovou část (například 11 MOD 4.7 je 3).
\ Celé dělení: Vydělte celé číslo jiným celým číslem. Výsledkem je také celé číslo; například 9 \ 4 je 2. Pravý operand nemůže být nula
^ Exponentiace: Vrátí výsledek zvýšeného čísla na mocninu (exponent). K oddělení čísla od síly použijte stříška (^); například 2 ^ 3 je 8. Reálná a záporná čísla jsou povolena pro základ i exponent. Jakýkoli výraz, který se rovná imaginárnímu číslu, například -1 ^ 0,5, má však za následek řetězec „-1. # IND. ColdFusion nepodporuje imaginární ani komplexní čísla.

Komentáře

CFScript má dvě formy komentářů: jednořádkový a víceřádkový.

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

Zkus chytit

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

Přepnout prohlášení

switch (car) {
    case "Nissan":
         WriteOutput("I own a Nissan");
         break;
    case "Toyota":
         WriteOutput("I own a Toyota");
         break;
    default:
         WriteOutput("I'm exotic");
}

Opakování

Pro smyčku

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

Zatímco Loop

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

Smyčka Do / While

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

Smyčka nad polem

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

Rozdíly od JavaScriptu

Ačkoli jsou CFScript a JavaScript podobné, mají několik klíčových rozdílů. Následující seznam uvádí funkce CFScript, které se liší od JavaScriptu:

  • CFScript používá výrazy ColdFusion, které nejsou nadmnožinou ani podmnožinou výrazů JavaScriptu. Zejména výrazy ColdFusion nepodporují bitové operátory a operátor ColdFusion MOD nebo% pracuje odlišně od odpovídajícího operátoru% JavaScript: Ve ColdFusion operátor provádí celé číslo aritmetiku a ignoruje zlomkové části. Výrazy ColdFusion také podporují operátory EQV, IMP, CONTAINS a NEOBSAHUJÍ, které nejsou podporovány v JavaScriptu.
  • Deklarace proměnných (klíčové slovo var) se používají pouze v uživatelsky definovaných funkcích a vláknech.
  • CFScript nerozlišuje velká a malá písmena.
  • Všechny příkazy končí středníkem a konce řádků v kódu jsou ignorovány.
  • Přiřazení jsou příkazy, nikoli výrazy, a proto je nelze použít v situacích, které vyžadují vyhodnocení operace přiřazení.
  • Objekty JavaScriptu, například windowa document, nejsou k dispozici.
  • CFScript zpracovává pouze server ColdFusion. Na straně klienta neexistuje žádný CFScript.

Reference

externí odkazy