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 на стороне клиента отсутствует.

Ссылки

внешние ссылки