CFScript - CFScript
CFScript on CFML- laajennus ColdFusion-alustalla. CFScript muistuttaa JavaScriptiä . Jotkut ColdFusion-kehittäjät pitävät sitä parempana, koska siinä on vähemmän visuaalisia ja typografisia piirteitä kuin tavallisessa CFML: ssä.
Sisällys
Käyttö
Paras tapa on kirjoittaa ColdFusion Components ja kaikki liiketoimintalogiikat CFScript-muodossa ja käyttää CFML- tiedostoa vain .cfm-tiedostoissa HTML: ään .
Kaikkien CFScript-koodien on oltava CFScript-tunnisteparin sisällä seuraavasti, paitsi jos ne ovat puhtaassa komentosarjapohjaisessa ColdFusion-komponentissa.
<cfscript>
xParam = 115;
yParam = 200;
color = 'FFCC99';
</cfscript>
Yksinkertainen esimerkki toiminnosta :
<cfscript>
function Sum(a, b) {
var sum = a + b;
return sum;
}
</cfscript>
Yksinkertainen esimerkki CFScript-komponentista, joka sisältää kaksi toimintoa:
component {
public void function foo() {
WriteOutput("Method foo() called<br/>");
}
public function getString() {
var x = "hello";
return x;
}
}
ColdFusion 11, Railo 4.1+ ja Lucee 4.5+ tekevät molemmat parhaansa tukeakseen CFF-tiedostojen täydellisiä cf-tunnisteita. Vaikka kaikille tunnisteille ei ehkä ole suoraa korvaamista, on usein silti mahdollista saavuttaa tunnisteen tulokset komentosarjalla, mutta eri syntaksin kautta. Esimerkiksi näin saadaan kysely muuttujaan CFSCRIPT kirjoittamatta UDF : tä:
<cfscript>
qGetData = new Query();
qGetData .setDataSource('#APPLICATION.datasource#');
qGetData .setSQL('SELECT column1, column2 FROM table WHERE 1');
qDateResult = qGetData .Execute().getResult();
</cfscript>
Syntaksi
ColdFusion 8: n jälkeen CFScript on tukenut syntaksi lyhenteitä, jotka ovat yleisiä monissa muissa ohjelmointikielissä, kuten "++", "<=" ja "+ =".
Aritmeettiset operaattorit
| operaattori | Kuvaus |
|---|---|
| + - * / | Peruslaskutoimitus: Liittäminen, vähentäminen, kertoaminen ja jakaminen.
Jaottelussa oikea operandi ei voi olla nolla. |
| ++ - | Lisäys ja vähennys. Suurenna tai pienennä muuttujaa yhdellä.
Näitä operaattoreita voidaan käyttää ennakkoon lisäämiseen tai pienentämiseen (kuten x = ++ i), missä muuttujaa muutetaan ennen kuin sitä käytetään lausekkeessa. Niitä voidaan käyttää myös lisäyksen lisäämiseen tai pienentämiseen (kuten x = i ++), missä arvo muuttuu sen jälkeen, kun sitä käytetään lausekkeessa. Jos muuttujan i arvo on alun perin esimerkiksi 7, x: n arvo x = ++ i: ssä on lausekkeen arvioinnin jälkeen 8, mutta x = i ++: ssa x: n arvo on 7. Molemmissa tapauksissa minusta tulee 8. Näitä operaattoreita ei voida käyttää lausekkeisiin, joihin liittyy funktioita, kuten f (). A ++. Voit myös käyttää lauseketta, kuten - ++ x, mutta --- x ja +++ x aiheuttavat virheitä, koska niiden merkitys on epäselvä. Voit käyttää sulkeita operaattorien ryhmittelemiseen, kuten - (- x) tai + (++ x). |
| + = - = * = / =% = | Yhdistelmäoperaattorit. Oikealla olevaa muuttujaa käytetään sekä elementtinä lausekkeessa että tulosmuuttujana. Siten lauseke a + = b vastaa a = a + b.
Lausekkeessa voi olla vain yksi yhdistelmämääritysoperaattori. |
| + - | Yhtenäinen aritmeettinen: Aseta luvun merkki. |
| MOD tai% | Modulus: Palauta loput sen jälkeen, kun luku on jaettu jakajalla. Tuloksella on sama merkki kuin jakajalla. Operaattorin oikealla puolella olevan arvon tulisi olla kokonaisluku; Ei-numeerisen arvon käyttäminen aiheuttaa virheen, ja jos määrität todellisen luvun, ColdFusion jättää huomioimatta murto-osan (esimerkiksi 11 MOD 4.7 on 3). |
| \ | Kokonaislukujako: Jaa kokonaisluku toisella kokonaisluvulla. Tulos on myös kokonaisluku; esimerkiksi 9 \ 4 on 2. Oikea operandi ei voi olla nolla |
| ^ | Eksponentraatio: Palauta tehosta nostetun luvun tulos (eksponentti). Käytä caret-merkkiä (^) erottaaksesi numeron virrasta; esimerkiksi 2 ^ 3 on 8. Todelliset ja negatiiviset numerot ovat sallittuja sekä kannalle että eksponentille. Kuitenkin mikä tahansa lauseke, joka vastaa kuvitteellista lukua, kuten -1 ^ .5, johtaa merkkijonoon "-1. # IND. ColdFusion ei tue kuvitteellisia tai kompleksisia numeroita. |
Kommentit
CFScriptillä on kaksi kommenttimuotoa: yhden rivin ja monilinjan.
// 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. */
Yritä saada kiinni
try {
throw(message="Oops", detail="xyz");
} catch (any e) {
WriteOutput("Error: " & e.message);
rethrow;
} finally {
WriteOutput("I run even if no error");
}
Vaihda lausunto
switch (car) {
case "Nissan":
WriteOutput("I own a Nissan");
break;
case "Toyota":
WriteOutput("I own a Toyota");
break;
default:
WriteOutput("I'm exotic");
}
looping
Loopille
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
Vaikka silmukka
x = 0;
while (x LT 5) {
x = x + 1;
WriteOutput(x);
}
// Outputs: 12345
Tee / kun silmukka
x = 0;
do {
x = x+1;
WriteOutput(x);
} while (x LTE 0);
// Outputs: 1
Silmukointi ryhmän yli
for (item in array) {
doSomething(item);
}
Eroa JavaScriptiin
Vaikka CFScript ja JavaScript ovat samankaltaiset, niillä on useita keskeisiä eroja. Seuraava luettelo identifioi CFScriptin ominaisuudet, jotka eroavat JavaScriptista:
- CFScript käyttää ColdFusion-lausekkeita, jotka eivät ole JavaScript-lausekkeiden ylä- tai alajoukkoja. Erityisesti ColdFusion-lausekkeet eivät tue bittioperaattoreita, ja ColdFusion MOD tai% -operaattori toimii eri tavalla kuin vastaava JavaScript% -operaattori: ColdFusionissa operaattori suorittaa kokonaislukuaritmeettista arvoa ja jättää murto-osat. ColdFusion-lausekkeet tukevat myös EQV: tä, IMP: tä, SISÄLTÄÄ, JA EI SISÄLLÄ operaattoreita, joita JavaScript ei tue.
- Muuttuvia ilmoituksia (var-avainsana) käytetään vain käyttäjän määrittelemissä toiminnoissa ja säikeissä.
- CFScript ei ole kirjainkoko.
- Kaikki lauseet päättyvät puolipisteellä, ja koodin rivinvaihdot jätetään huomioimatta.
- Tehtävät ovat lauseita, ei lausekkeita, joten niitä ei voida käyttää tilanteissa, joissa vaaditaan toimeksiannon arviointi.
- JavaScript-objektit, kuten
windowjadocument, eivät ole käytettävissä. - Vain ColdFusion-palvelin käsittelee CFScriptiä. Asiakaspuolen CFcriptiä ei ole.