CFScript - CFScript
CFScript - это расширение CFML на платформе ColdFusion. CFScript похож на JavaScript . Некоторые разработчики ColdFusion предпочитают его, поскольку он требует меньше визуальных и типографских затрат, чем обычный CFML.
использование
Считается лучшей практикой писать компоненты ColdFusion и всю бизнес-логику на CFScript и использовать CFML только в файлах .cfm среди HTML .
Если только он не находится в чистом компоненте ColdFusion на основе скриптов, весь код CFScript должен содержаться в паре тегов CFScript следующим образом:
<cfscript>
xParam = 115;
yParam = 200;
color = 'FFCC99';
</cfscript>
Простой пример функции :
<cfscript>
function Sum(a, b) {
var sum = a + b;
return sum;
}
</cfscript>
Простой пример компонента в CFScript, содержащего две функции:
component {
public void function foo() {
WriteOutput("Method foo() called<br/>");
}
public function getString() {
var x = "hello";
return x;
}
}
ColdFusion 11, Railo 4.1+ и Lucee 4.5+ и делают все возможное , чтобы в полной мере поддерживать сравни тегов в CFScript. Хотя прямые замены могут быть не для всех тегов, часто все же возможно получить результаты тега в сценарии, но с использованием другого синтаксиса. Например, вот как получить запрос к переменной в CFSCRIPT без написания UDF :
<cfscript>
qGetData = new Query();
qGetData .setDataSource('#APPLICATION.datasource#');
qGetData .setSQL('SELECT column1, column2 FROM table WHERE 1');
qDateResult = qGetData .Execute().getResult();
</cfscript>
Синтаксис
Начиная с ColdFusion 8, CFScript поддерживает сокращения синтаксиса , которые распространены во многих других языках программирования, такие как «++», «<=» и «+ =».
Арифметические операторы
| Оператор | Описание |
|---|---|
| + - * / | Базовая арифметика: сложение, вычитание, умножение и деление.
При делении правый операнд не может быть нулевым. |
| ++ - | Увеличение и уменьшение. Увеличьте или уменьшите переменную на единицу.
Эти операторы могут использоваться для предварительного увеличения или уменьшения (как в x = ++ i), где переменная изменяется перед ее использованием в выражении. Их также можно использовать для пост-инкремента или уменьшения (как в x = i ++), где значение изменяется после того, как оно используется в выражении. Если значение переменной i изначально равно 7, например, значение x в x = ++ i равно 8 после вычисления выражения, но в x = i ++ значение x равно 7. В обоих случаях значение я становится 8. Эти операторы нельзя использовать с выражениями, которые включают функции, как в f (). A ++. Кроме того, вы можете использовать такие выражения, как - ++ x, но --- x и +++ x вызывают ошибки, поскольку их значения неоднозначны. Однако вы можете использовать круглые скобки для группировки операторов, например - (- x) или + (++ x). |
| + = - = * = / =% = | Составные операторы присваивания. Переменная справа используется как элемент выражения и как переменная результата. Таким образом, выражение a + = b эквивалентно a = a + b.
В выражении может быть только один составной оператор присваивания. |
| + - | Унарная арифметика: установка знака числа. |
| MOD или% | Модуль: возвращает остаток от деления числа на делитель. Результат имеет тот же знак, что и делитель. Значение справа от оператора должно быть целым числом; использование нечислового значения вызывает ошибку, и если вы указываете действительное число, ColdFusion игнорирует дробную часть (например, 11 MOD 4.7 равно 3). |
| \ | Целочисленное деление: целое число делится на другое целое число. Результат также является целым числом; например, 9 \ 4 равно 2. Правый операнд не может быть нулевым. |
| ^ | Возведение в степень: вернуть результат числа, возведенного в степень (экспонента). Используйте символ вставки (^), чтобы отделить число от степени; например, 2 ^ 3 равно 8. Действительные и отрицательные числа разрешены как для основания, так и для экспоненты. Однако любое выражение, которое приравнивается к мнимому числу, например -1 ^ .5, приводит к строке «-1. # IND. ColdFusion не поддерживает мнимые или комплексные числа. |
Комментарии
CFScript имеет две формы комментариев: однострочные и многострочные.
// 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 {
throw(message="Oops", detail="xyz");
} catch (any e) {
WriteOutput("Error: " & e.message);
rethrow;
} finally {
WriteOutput("I run even if no error");
}
Заявление о переключении
switch (car) {
case "Nissan":
WriteOutput("I own a Nissan");
break;
case "Toyota":
WriteOutput("I own a Toyota");
break;
default:
WriteOutput("I'm exotic");
}
Зацикливание
Для петли
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
Пока цикл
x = 0;
while (x LT 5) {
x = x + 1;
WriteOutput(x);
}
// Outputs: 12345
Сделать / Пока цикл
x = 0;
do {
x = x+1;
WriteOutput(x);
} while (x LTE 0);
// Outputs: 1
Цикл по массиву
for (item in array) {
doSomething(item);
}
Отличия от JavaScript
Хотя CFScript и JavaScript похожи, у них есть несколько ключевых отличий. В следующем списке указаны функции CFScript, которые отличаются от JavaScript:
- CFScript использует выражения ColdFusion , которые не являются надмножеством или подмножеством выражений JavaScript. В частности, выражения ColdFusion не поддерживают побитовые операторы , а оператор ColdFusion MOD или% работает иначе, чем соответствующий оператор% JavaScript: в ColdFusion оператор выполняет целочисленную арифметику и игнорирует дробные части. Выражения ColdFusion также поддерживают операторы EQV, IMP, CONTAINS и DOES NOT CONTAIN, которые не поддерживаются в JavaScript.
- Объявления переменных (ключевое слово var) используются только в пользовательских функциях и потоках.
- CFScript не чувствителен к регистру.
- Все операторы заканчиваются точкой с запятой, а разрывы строк в коде игнорируются.
- Присваивания являются операторами, а не выражениями, и поэтому не могут использоваться в ситуациях, требующих оценки операции присваивания.
- Объекты JavaScript, такие как
windowиdocument, недоступны. - CFScript обрабатывает только сервер ColdFusion. CFScript на стороне клиента отсутствует.