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.
Zawartość
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
windowidocumentnie są dostępne. - Tylko serwer ColdFusion przetwarza CFScript. Nie ma po stronie klienta CFScript.