cfscript - CFScript

Cfscript é uma extensão da CFML na plataforma ColdFusion. Cfscript assemelha JavaScript . Alguns desenvolvedores ColdFusion preferem que uma vez que tem menos sobrecarga visual e tipográfica do que CFML comum.

Uso

É considerada a melhor prática para escrever componentes do ColdFusion e toda a lógica de negócios em cfscript e usar CFML apenas em arquivos .cfm entre HTML .

Todo o código cfscript deve ser contido dentro de um par de tags cfscript como segue, a menos que seja dentro de um ColdFusion Component baseada em script puro.

<cfscript>
    xParam = 115;
    yParam = 200;
    color = 'FFCC99';
</cfscript>

Um exemplo simples de uma função de :

<cfscript>
function Sum(a, b) {
    var sum = a + b;
    return sum;
}
</cfscript>

Um exemplo simples de um componente em cfscript, contendo duas funções:

component {
    public void function foo() {
        WriteOutput("Method foo() called<br/>");
    }

    public function getString() {
        var x = "hello";
        return x;
    }
}

ColdFusion 11, Railo 4.1+ e Lucee 4.5+ tanto fazer o seu melhor para suportar totalmente as tags CF na cfscript. Enquanto não pode haver substituições diretas para todas as marcas, muitas vezes é ainda possível alcançar os resultados de uma tag no script, mas através de uma sintaxe diferente. Por exemplo, esta é a forma de obter uma consulta em uma variável em CFSCRIPT sem escrever uma UDF :

<cfscript>
    qGetData = new Query();
    qGetData .setDataSource('#APPLICATION.datasource#');
    qGetData .setSQL('SELECT column1, column2 FROM table WHERE 1');
    qDateResult = qGetData .Execute().getResult();
</cfscript>

Sintaxe

Desde ColdFusion 8, cfscript apoiou abreviaturas de sintaxe que são comuns em muitas outras linguagens de programação, como "++", "<=" e "+ =".

Operadores aritméticos

Operador Descrição
+ - * / aritmética básica: Adição, subtração, multiplicação e divisão.

Na divisão, o operando direito não pode ser zero.

++ - Aumentar e diminuir. Aumentar ou diminuir a variável por um.

Estes operadores pode ser utilizado para pré-incrementar ou decrementar (como em x = ++ I), em que a variável é alterado antes de ser utilizada na expressão. Eles também podem ser usados ​​para pós-incremento ou decremento (como em x = i ++), onde o valor é mudado depois de ser utilizado na expressão. Se o valor da variável i é inicialmente 7, por exemplo, o valor de x em x = ++ I é 8 após a avaliação da expressão, mas em x = i ++, o valor de x é de 7. Em ambos os casos, o valor de i torna-se 8.

Estes operadores não pode ser utilizado com expressões que envolvem funções, como na f (). A ++. Além disso, você pode usar uma expressão como - ++ x, mas --- x e +++ x causar erros, porque os seus significados são ambíguos. Você pode usar parênteses para agrupar os operadores, como em - (- x) ou + (++ x), no entanto.

+ = - = * = / =% = operadores de atribuição composto. A variável da direita é utilizada tanto como um elemento na expressão e a variável de resultado. Assim, a expressão de a + b = é equivalente a uma = a + b.

Uma expressão pode ter apenas um composto operador de atribuição.

+ - aritmética Unário: Defina o sinal de um número.
MOD ou% Modulus: Retornar o restante depois de um número é dividido por um divisor. O resultado tem o mesmo sinal que o divisor. O valor à direita do operador deve ser um número inteiro; usando um valor não numérico causa um erro, e se você especificar um número real, ColdFusion ignora a parte fracionária (por exemplo, 11 MOD 4.7 é 3).
\ divisão inteira: Divide um inteiro por outro inteiro. O resultado é também um número inteiro; por exemplo, 9 \ 4 é 2. O operando direito não pode ser zero
^ Exponenciação: Retornar o resultado de um número elevado a uma potência (expoente). Use o caractere acento circunflexo (^) para separar o número do poder; por exemplo, 2 ^ 3 é 8. Os números reais e negativos são permitidos para tanto a base e o expoente. No entanto, qualquer expressão que equivale a um número imaginário, tais -1 ^ .5 resulta na cadeia "-1. # IND. ColdFusion não suporta números imaginários ou complexos.

Comentários

Cfscript tem duas formas de comentários: única linha e de várias linhas.

// 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. */

Try / catch

try {
    throw(message="Oops", detail="xyz");
} catch (any e) {
    WriteOutput("Error: " & e.message);
    rethrow;
} finally {
    WriteOutput("I run even if no error");
}

switch

switch (car) {
    case "Nissan":
         WriteOutput("I own a Nissan");
         break;
    case "Toyota":
         WriteOutput("I own a Toyota");
         break;
    default:
         WriteOutput("I'm exotic");
}

looping

For loop

for (i=1; i LTE ArrayLen(array); i=i+1) {
    WriteOutput(array[i]);
}

NO loop

struct = StructNew();
struct.one = "1";
struct.two = "2";
for (key in struct) {
    WriteOutput(key);
}
//OUTPUTS onetwo

while loop

x = 0;
while (x LT 5) {
    x = x + 1;
    WriteOutput(x);
}
// Outputs: 12345

Do / While Loop

x = 0;
do {
    x = x+1;
    WriteOutput(x);
} while (x LTE 0);
// Outputs: 1

Looping sobre um Array

for (item in array) {
    doSomething(item);
}

Diferenças de JavaScript

Embora cfscript e JavaScript são semelhantes, eles têm várias diferenças fundamentais. A lista a seguir identifica os recursos cfscript que diferem de JavaScript:

  • Cfscript usa expressões ColdFusion, que não são um subconjunto ou um subconjunto de expressões JavaScript. Em particular, expressões do ColdFusion não suportam operadores bit a bit, eo ColdFusion MOD ou operador% opera de forma diferente a partir do correspondente operador JavaScript%: Em ColdFusion, o operador faz aritmética inteira e ignora partes fracionárias. expressões ColdFusion também apoiar o EQV, IMP, contém e não contém operadores que não são suportados em JavaScript.
  • declarações de variáveis ​​(var de palavras-chave) são usados ​​somente em funções e tópicos definidos pelo utilizador.
  • Cfscript não diferencia maiúsculas de minúsculas.
  • Todas as declarações terminam com um ponto e vírgula, e quebras de linha no código são ignorados.
  • Atribuições são declarações, e não expressões, e, portanto, não pode ser usado em situações que exigem avaliação do funcionamento atribuição.
  • Objetos JavaScript, como windowe document, não estão disponíveis.
  • Apenas o servidor ColdFusion processa cfscript. Não há cfscript do lado do cliente.

Referências

links externos