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.
Conteúdo
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
window
edocument
, não estão disponíveis. - Apenas o servidor ColdFusion processa cfscript. Não há cfscript do lado do cliente.