CFScript - CFScript
CFScript es una extensión de CFML en la plataforma ColdFusion. CFScript se parece a JavaScript . Algunos desarrolladores de ColdFusion lo prefieren ya que tiene menos sobrecarga visual y tipográfica que CFML ordinario.
Uso
Se considera una buena práctica escribir componentes ColdFusion y toda la lógica empresarial en CFScript y utilizar CFML solo en archivos .cfm entre HTML .
A menos que esté dentro de un componente ColdFusion puro basado en script, todo el código CFScript debe estar contenido dentro de un par de etiquetas CFScript de la siguiente manera:
<cfscript>
xParam = 115;
yParam = 200;
color = 'FFCC99';
</cfscript>
Un ejemplo simple de una función :
<cfscript>
function Sum(a, b) {
var sum = a + b;
return sum;
}
</cfscript>
Un ejemplo simple de un componente en CFScript, que contiene dos funciones:
component {
public void function foo() {
WriteOutput("Method foo() called<br/>");
}
public function getString() {
var x = "hello";
return x;
}
}
ColdFusion 11, Railo 4.1+, y Lucee 4.5+ tanto todo lo posible para apoyar plenamente cf etiquetas en CFScript. Si bien puede que no haya sustituciones directas para todas las etiquetas, a menudo es posible lograr los resultados de una etiqueta en un script, pero a través de una sintaxis diferente. Por ejemplo, así es como obtener una consulta en una variable en CFSCRIPT sin escribir una UDF :
<cfscript>
qGetData = new Query();
qGetData .setDataSource('#APPLICATION.datasource#');
qGetData .setSQL('SELECT column1, column2 FROM table WHERE 1');
qDateResult = qGetData .Execute().getResult();
</cfscript>
Sintaxis
Desde ColdFusion 8, CFScript ha admitido abreviaturas de sintaxis que son comunes en muchos otros lenguajes de programación, como "++", "<=" y "+ =".
Operadores aritméticos
| Operador | Descripción |
|---|---|
| + - * / | Aritmética básica: suma, resta, multiplicación y división.
En la división, el operando derecho no puede ser cero. |
| ++ - | Incremento y decremento. Aumente o disminuya la variable en uno.
Estos operadores se pueden usar para preincrementar o disminuir (como en x = ++ i), donde la variable se cambia antes de que se use en la expresión. También se pueden usar para aumentar o disminuir posteriormente (como en x = i ++), donde el valor se cambia después de que se usa en la expresión. Si el valor de la variable i es inicialmente 7, por ejemplo, el valor de x en x = ++ i es 8 después de la evaluación de la expresión, pero en x = i ++, el valor de x es 7. En ambos casos, el valor de me convierto en 8. Estos operadores no se pueden usar con expresiones que involucran funciones, como en f (). A ++. Además, puede usar una expresión como - ++ x, pero --- x y +++ x causan errores, porque sus significados son ambiguos. Sin embargo, puede usar paréntesis para agrupar los operadores, como en - (- x) o + (++ x). |
| + = - = * = / =% = | Operadores de asignación compuesta. La variable de la derecha se usa como elemento en la expresión y como variable de resultado. Por tanto, la expresión a + = b es equivalente a a = a + b.
Una expresión solo puede tener un operador de asignación compuesta. |
| + - | Aritmética unaria: establece el signo de un número. |
| MOD o% | Módulo: devuelve el resto después de dividir un número por un divisor. El resultado tiene el mismo signo que el divisor. El valor a la derecha del operador debe ser un número entero; el uso de un valor no numérico provoca un error, y si especifica un número real, ColdFusion ignora la parte fraccionaria (por ejemplo, 11 MOD 4.7 es 3). |
| \ | División de enteros: divide un entero por otro entero. El resultado también es un número entero; por ejemplo, 9 \ 4 es 2. El operando derecho no puede ser cero |
| ^ | Exponenciación: Devuelve el resultado de un número elevado a una potencia (exponente). Utilice el carácter de intercalación (^) para separar el número de la potencia; por ejemplo, 2 ^ 3 es 8. Se permiten números reales y negativos tanto para la base como para el exponente. Sin embargo, cualquier expresión que sea equivalente a un número imaginario, como -1 ^ .5, da como resultado la cadena "-1. # IND. ColdFusion no admite números imaginarios o complejos. |
Comentarios
CFScript tiene dos formas de comentarios: una línea y varias líneas.
// 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. */
Trata de atraparlo
try {
throw(message="Oops", detail="xyz");
} catch (any e) {
WriteOutput("Error: " & e.message);
rethrow;
} finally {
WriteOutput("I run even if no error");
}
Declaración de cambio
switch (car) {
case "Nissan":
WriteOutput("I own a Nissan");
break;
case "Toyota":
WriteOutput("I own a Toyota");
break;
default:
WriteOutput("I'm exotic");
}
Bucle
En bucle
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
Mientras bucle
x = 0;
while (x LT 5) {
x = x + 1;
WriteOutput(x);
}
// Outputs: 12345
Hacer / mientras bucle
x = 0;
do {
x = x+1;
WriteOutput(x);
} while (x LTE 0);
// Outputs: 1
Bucle sobre una matriz
for (item in array) {
doSomething(item);
}
Diferencias de JavaScript
Aunque CFScript y JavaScript son similares, tienen varias diferencias clave. La siguiente lista identifica las características de CFScript que difieren de JavaScript:
- CFScript utiliza la expresión ColdFusion , que no es un superconjunto ni un subconjunto de expresiones JavaScript. En particular, las expresiones de ColdFusion no admiten operadores bit a bit , y el operador ColdFusion MOD o% opera de manera diferente al operador% de JavaScript correspondiente: en ColdFusion, el operador hace aritmética de enteros e ignora las partes fraccionarias. Las expresiones de ColdFusion también admiten los operadores EQV, IMP, CONTAINS y DOES NOT CONTAIN que no son compatibles con JavaScript.
- Las declaraciones de variables (palabra clave var) solo se utilizan en funciones e hilos definidos por el usuario.
- CFScript no distingue entre mayúsculas y minúsculas.
- Todas las declaraciones terminan con un punto y coma y los saltos de línea del código se ignoran.
- Las asignaciones son declaraciones, no expresiones y, por lo tanto, no se pueden usar en situaciones que requieren evaluar la operación de asignación.
- Los objetos JavaScript, como
windowydocument, no están disponibles. - Solo el servidor ColdFusion procesa CFScript. No hay CFScript del lado del cliente.