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 windowy document, no están disponibles.
  • Solo el servidor ColdFusion procesa CFScript. No hay CFScript del lado del cliente.

Referencias

enlaces externos