CFScript - это расширение CFML на платформе ColdFusion. CFScript похож на JavaScript . Некоторые разработчики ColdFusion предпочитают его, поскольку он требует меньше визуальных и типографских затрат, чем обычный CFML. [ требуется разъяснение ]
Применение
Считается лучшей практикой писать компоненты ColdFusion и всю бизнес-логику на CFScript и использовать CFML только в файлах .cfm среди HTML .
Если только он не находится в чистом компоненте ColdFusion, основанном на сценариях, весь код CFScript должен содержаться в паре тегов CFScript следующим образом:
xParam = 115 ; yParam = 200 ; цвет = 'FFCC99' ;
Простой пример функции :
function Sum ( a , b ) { var sum = a + b ; сумма возврата ; }
Простой пример компонента в CFScript, содержащего две функции:
компонент { public void function foo () { WriteOutput ( "Метод foo () вызван
" ); } публичная функция getString () { var x = "hello" ; вернуть x ; } }
ColdFusion 11, Railo 4.1+ и Lucee 4.5+ и делают все возможное , чтобы в полной мере поддерживать сравни тегов в CFScript. Хотя может не быть прямой замены для всех тегов, часто все же возможно получить результаты тега в сценарии, но с использованием другого синтаксиса. Например, вот как получить запрос к переменной в CFSCRIPT без написания UDF :
qGetData = новый запрос (); qGetData . setDataSource ( '# ПРИЛОЖЕНИЕ.datasource #' ); qGetData . setSQL ( 'ВЫБРАТЬ столбец1, столбец2 ИЗ таблицы ГДЕ 1' ); qDateResult = qGetData . Выполнить (). getResult ();
Синтаксис
Начиная с ColdFusion 8, CFScript поддерживает сокращения синтаксиса , которые распространены во многих других языках программирования, такие как «++», «<=» и «+ =». [1]
Арифметические операторы
Оператор | Описание |
---|---|
+ - * / | Базовая арифметика: сложение, вычитание, умножение и деление. При делении правый операнд не может быть нулевым. |
++ - | Увеличение и уменьшение. Увеличьте или уменьшите переменную на единицу. Эти операторы могут использоваться для предварительного увеличения или уменьшения (как в 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 имеет две формы комментариев: однострочные и многострочные.
// Это однострочный комментарий. // Это второй однострочный комментарий.
/ * Это многострочный комментарий. Необязательно начинать каждую строку с индикатора комментария. Эта строка является последней строкой в комментарии. * /
Попробуй поймать
попробуйте { throw ( message = "Oops" , detail = "xyz" ); } catch ( любой e ) { WriteOutput ( "Ошибка:" & e . сообщение ); перебросить ; } наконец { WriteOutput ( "Я бегу, даже если нет ошибок" ); }
Заявление о переключении
переключатель ( автомобиль ) { case "Nissan" : WriteOutput ( "У меня есть Nissan" ); перерыв ; случай «Тойота» : WriteOutput ( «У меня есть Тойота» ); перерыв ; по умолчанию : WriteOutput ( «Я экзотика» ); }
Зацикливание
Для петли
for ( i = 1 ; i LTE ArrayLen ( массив ); i = i + 1 ) { WriteOutput ( array [ i ]); }
FOR IN Loop
struct = StructNew (); структура . one = "1" ; структура . два = "2" ; for ( ключ в структуре ) { WriteOutput ( ключ ); } // ВЫХОДОВ один два
Пока цикл
х = 0 ; в то время как ( x LT 5 ) { x = x + 1 ; WriteOutput ( x ); } // Вывод: 12345
Сделать / Пока цикл
х = 0 ; сделать { х = х + 1 ; WriteOutput ( x ); } while ( x LTE 0 ); // Выходы: 1
Цикл по массиву
для ( элемент в массиве ) { doSomething ( элемент ); }
Отличия от 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 не существует.
Рекомендации
- ^ Надель, Бен (31 мая 2007). «Изучение ColdFusion 8: приветствую оператора New ++» .