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.
Obsah
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
windowadocument, nejsou k dispozici. - CFScript zpracovává pouze server ColdFusion. Na straně klienta neexistuje žádný CFScript.