CFScript - CFScript

CFScript jest przedłużeniem CFML na platformie ColdFusion. CFScript przypomina JavaScript . Niektórzy programiści wolą ColdFusion go, ponieważ ma mniej wizualne i typograficzne narzut niż zwykłe CFML.

Stosowanie

Jest uważany za najlepsze praktyki napisać składniki ColdFusion i całą logikę biznesową w CFScript i używać CFML tylko w plikach .cfm wśród HTML .

Cały kod CFScript muszą być zawarte w parze znaczników CFScript w następujący sposób, chyba że jest to w czystej oparciu o skrypt ColdFusion Component.

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

Prostym przykładem funkcji :

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

Prostym przykładem składnik CFScript, zawierający dwie funkcje:

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

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

ColdFusion 11, Railo 4.1+ i Lucee 4.5+ zarówno wszelkich starań, aby w pełni wspierać tagów CF CFScript. Chociaż nie może być podstawienia Direct dla wszystkich znaczników, często jest to jeszcze możliwe do osiągnięcia wyniki tag w skrypcie, ale za pośrednictwem innej składni. Na przykład, jest to, jak uzyskać zapytania do zmiennej w CFScript bez pisania UDF :

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

Składnia

Ponieważ ColdFusion 8, CFScript wsparła skróty składniowe, które są powszechne w wielu innych językach programowania, takich jak „++”, „<=” i „+ =”.

Operatory arytmetyczne

Operator Opis
+ - * / Podstawowe arytmetyczne: dodawanie, odejmowanie, mnożenie i dzielenie.

W podziale, prawy argument nie może być zero.

++ - Przyrost i ubytek. Zwiększyć lub zmniejszyć wartość zmiennej o jeden.

Podmioty te mogą być wykorzystane do wstępnego zwiększa swoją wartość lub zmniejszanie (jak w x = ++ i), gdzie zmienna zostanie zmieniony, zanim zostanie użyta w wyrażeniu. Mogą być również wykorzystywane do postu zwiększa swoją wartość lub zmniejszanie (jak w x = i ++), gdzie wartość jest zmieniana po to jest używane w wyrażeniu. Jeżeli wartość zmiennej i jest początkowo 7, na przykład, wartość x w x = ++ i jest 8 po ocenie ekspresji, ale w x = i ++, wartość x wynosi 7. W obu przypadkach, wartość I staje 8.

Podmioty te nie mogą być używane z wyrażeń, które obejmują funkcje, jak w f (). A ++. Ponadto, można użyć wyrażenia takie jak - ++ x, ale --- x a +++ x powodować błędy, ponieważ ich znaczenia są niejednoznaczne. Można użyć nawiasów do grupy operatorów, jak na - (- x) lub + (++ x), jednak.

+ = - = * = / =% = Operatorzy przyporządkowania związku. Zmienna po prawej stronie służy zarówno jako element ekspresji i zmiennej wynikowej. Tak więc, wyrażenie = a + b jest równa a = A + B.

Wyrażenie może mieć tylko jeden związek operatora przypisania.

+ - Jednoargumentowy arytmetyka: Ustaw znak liczby.
MOD lub% Moduł: Powrót pozostałą po podzieleniu liczby przez dzielnik. Efektem ma taki sam znak jak dzielnik. Wartość po prawej stronie operatora powinna być liczbą całkowitą; używając wartości nienumeryczną powoduje błąd, a jeśli podasz liczbę rzeczywistą, ColdFusion ignoruje część ułamkową (na przykład 11 MOD 4.7 jest 3).
\ dzielenia całkowitego: podzielić liczbę całkowitą inną liczbę całkowitą. Wynikiem jest liczbą całkowitą; Przykładowo, 9 \ 4 2. prawy argument nie może być zerowa
^ Potęgowanie: Powrót wyniku liczbę podniesioną do potęgi (wykładnik). Użyj znaku daszka (^), aby oddzielić numer z mocą; Na przykład, 2 ^ 3 8. rzeczywiste i ujemne numery mogą zarówno podstawy i wykładnikiem. Jednakże każda wyrażenie o liczbie urojonej takie -1 ^ .5 wyniki w ciągu „1. # Ind. ColdFusion nie obsługują numery urojone lub złożone.

Komentarze

CFScript ma dwie formy komentarzy: jeden wiersz i wielowierszowego.

// 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óbuj złapać

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

Instrukcja switch

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

zapętlenie

Dla pętli

for (i=1; i LTE ArrayLen(array); i=i+1) {
    WriteOutput(array[i]);
}

Bo w pętli

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

pętli while

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

Zrobić / pętli while

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

Zapętlenie nad tablicy

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

Różnice z JavaScript

Chociaż CFScript i JavaScript są podobne, mają kilka kluczowych różnic. Poniższa lista zawiera funkcje CFScript które różnią się od JavaScript:

  • CFScript używa wyrażeń ColdFusion, które nie są rozszerzeniem lub podzbiorem wyrażeń JavaScript. W szczególności, wyrażenie ColdFusion nie są obsługiwane podczas bitowe i ColdFusion MOD lub operator% działa w różny sposób z odpowiedniego JavaScript% operatora W ColdFusion, operator ma całkowitą arytmetycznych i ignoruje części ułamkowej. Wyrażenia ColdFusion również wspierać równoważnika, IMP, zawiera i nie zawiera podmioty, które nie są obsługiwane w JavaScript.
  • Zgłoszenia kluczowych zmiennych (VAR) są używane jedynie w funkcjach i nici przez użytkownika.
  • CFScript nie jest uwzględniana wielkość liter.
  • Wszystkie oświadczenia kończyć się średnikiem, a podziały wiersza w kodzie są ignorowane.
  • Zadania są wypowiedzi, a nie wyrażenia, a zatem nie może być stosowany w sytuacjach, które wymagają oceny funkcjonowania przypisania.
  • Obiektów JavaScriptu, jak windowi documentnie są dostępne.
  • Tylko serwer ColdFusion przetwarza CFScript. Nie ma po stronie klienta CFScript.

Referencje

Linki zewnętrzne