Краткая терминология скриптов
JavaScript — интерпретируемый язык
Как и большинство языков сценариев, JavaScript интерпретируется средой, в которой он выполняется. JavaScript не компилируется в бинарный код наподобие .ехе. Недостаток интерпретируемого языка — для выполнения кода затрачивается много времени, поскольку среда (Adobe InDesign) компилирует директивы во время выполнения. Однако есть и преимущество — можно легко и быстро усовершенствовать исходный код.
JavaScript является объектно-ориентированным языком
Вы будете работать с объектами, которые инкапсулируют данные (свойства) и поведение (методы). Однако, хоть и можно работать с объектами, их невозможно разделить на подклассы. Объектная модель JavaScript основывается на экземплярах, а не на концепции наследования.
Комментарии в JavaScript
В JavaScript комментарии в скрипте пишутся так:
// комментарий
Или так:
/* Это длинный комментарий
в несколько
строк*/
Типы данных в JavaScript
1. Тип Undefined (неопределенный)
Этот тип состоит из единственного значения undefined. Это значение, которое принимает переменная, которая объявлена в программе, но которой еще не присвоено никакого значения.
2. Тип Null (нулевой)
Этот тип состоит из единственного значения null. Это значение означает нулевую, пустую или несуществующую ссылку.
3. Тип Boolean
Логический тип данных. Имеет всего два значения — True и False
4. Тип String — строковые данные — последовательность текстовых символов, заключенных в кавычки, например, «это строка». Можно применять для строк и одинарные кавычки — ‘это строка’. Но нельзя применять одновременно и двойные и одинарные кавычки. ‘Hello World” — вызовет ошибку.
Как надо поступить, если надо написать в скрипте такое слово, как Д’Артаньян, в котором уже есть одинарная кавычка? Ведь эта кавычка будет истолкована как конец строки. И три кавычки в одном выражении вызовут ошибку. В этих случаях ставят перед кавычкой в тексте обратную косую черту, чтобы указать, что данный символ является частью текста.
alert(‘Д’Артаньян’) – неправильно
alert(‘Д\’Артаньян’) – правильно
Так же поступают и в случае двойных кавычек.
Обратная косая черта выступает как служебный символ. Ну а как поступить, если её надо отобразить в тексте? В этом случае надо писать её два раза – \\.
Развивая тему, скажем, что для переноса строки используется последовательность \n,
для знака табуляции – \t. Полный список вы найдете в любом справочном руководстве по JavaScript.
5. Тип Number (числовой)
а) Integer — это целые числа, например, 15. Они могут быть как положительными, так и отрицательыми. Диапазон: от –2 в степени 53 до +2 в степени 53
б) Floating — числа с плавающей точкой, например, 8,687
6. Тип Object (объектный)
Значением этого типа являются объекты.
JavaScript — слабо типизированный язык. Он отличается от типизированных языков, таких как Java и C++, которые требуют объявления всех переменных определенных типов перед началом их использования. JavaScript, наоборот, очень гибок. Вы не обязаны объявлять переменные специального типа. Если специальный тип вам неизвестен, то можно работать с переменной. Последнее утверждение иллюстрируется фрагментом кода. Например, требуется объявить переменную myVal, присвоить ей строковое значение и отобразить ее в окне сообщений. Можно воспользоваться следующим кодом:
function flexible () {
var myVal; // объявляем переменную myVal
mVal = «Pi»; // присваивает myVal некоторое значение
alert (myVal); // используем ее
}
Хотя явное объявление переменных и отражает хороший тон программирования, вовсе не обязательно проделывать это. Следующий код, прекрасно функционирующий в JavaScript, окажется просто немыслимым в типизированных языках.
function flexible () {
mVal = «Pi» // устанавливаем, значение необъявленной переменной myVal
alert (myVal) // используем ее
}
Следующий пример продемонстрирует всю гибкость языка JavaScript — можно изменить тип значения, представляемого переменной. Например, переменная myVal в процессе выполнения функции изменяет строковое значение на численное:
function flexible () {
var myVal = «Pi»;
alert (myVal);
myVal = 3.14159;
alert (myVal); }
Преобразование из одного типа в другой
//Преобразование из числа в строку:
myNumber = 2;
myString = myNumber + «»;
//Преобразование из строки в целые:
myString = «2″;
myNumber = parseInt(myString);
//Если строка содержит десятичное значение используйте «parseFloat» раньше чем «parseInt»:
myNumber = parseFloat(myString);
//Вы можете преобразовывать строки в числа используя следующий метод:
myNumber = +myString;
Переменные
Переменные являются контейнерами для значений. Переменные могут содержать цифры, строки текста или объекты Индизайна.
Переменным присваиваются значения следующим способом:
var myNumber = 10;
var myString = «Hello, World!»;
var myTextFrame = myDocument.pages.item(0).textFrames.add();
Оператор var используется для объявления переменной, и использование его вне функций опционально. Вы также можете объявлять более одной переменной за один раз, назначая им значения одновременно:
var i = 0, x, max = 57;
Присвоение переменным понятных имен делает программный код более читаемым. Например, «myFirstPage» а не «с» или «х». Имена переменных должны быть одним словом, причем допускается применение как строчных так и заглавных символов, а также знака подчеркивания (my_first_page). Имена переменных не могут начинаться с цифры и не могут содержать в себе знаки пунктуации и кавычки.
Переменные в JavaScript чувствительны к прописным и строчным буквам. Так, например, переменные myTextframe и myTextFrame — разные переменные.
В JavaScript все переменные, перед которыми не стоит var, считаются глобальными, не привязанными ни к одной функции. Adobe рекомендует использовать var если в скрипте более чем 1 функция.
Массивы
AppleScript, JavaScript и VBScript поддерживают массивы — списки переменных. Например, для JavaScript:
myArray=[1, 2, 3, 4];
Для доступа к определенному значению массива используются индексы. Нумерация членов массива для JavaSсript начинается с нуля. Например, первый член массива:
myFirstArrayItem = myArray[0];
Массивы могут включать в себя другие массивы, как показано ниже
var myArray = [ [0, 0], [72, 72] ];
Подробнее о свойствах и методах массивов будет рассказано позже
Определение типа переменной
Иногда скрипты должны принять решение, основанное на типе объекта. Например, если вы работаете с выделением текста и вам надо чтобы скрипт остановился, когда выделенным становится элемент страницы.
//Присвоение переменной неизвестного типа, «myMysteryVariable»…
myType = myMysteryVariable.constructor.name;
//myType will be a string corresponding to the JavaScript type (e.g., «Rectangle»)
Операции инкремента, декремента
Это операции ++ и –. Так y++ (инкремент) является сокращенной записью y = y+1, аналогично y– (декремент) есть сокращенная запись выражения y=y-1.
Но с этими операциями есть одна тонкость. Они существуют в двух формах — префиксной (++y) и постфиксной (y++). Действие этих операций одно и то же — они увеличивают (операции декремента — уменьшают) свой операнд на 1, а вот результат у них разный. Префиксная форма в качестве результата выдает уже измененное на единицу значение операнда, а постфиксная — значение операнда до изменения.
a = 5;
x = a++;
y = ++a;
В этом фрагменте x получит значение 5, а y станет равной 7.
Операции сравнения
Это операции >, <, >=, <=, != и ==. Следует обратить внимание, что сравнение на равенство обозначается двумя знаками равно. Использование одного знака равенства приведет к ошибке.
Операндами этих операций могут быть арифметические данные, результат — типа boolean.
MyWidth > myHeight
Результатом будет true (1), если MyWidth больше myHeight, в противном случае false (0)
Операция целочисленного деления
Нужно учитывать, что деление одного целого на другое выдает целое, причем не округляет, а отбрасывает дробную часть.
Остаток от деления (значение по модулю)
В JavaScript имеется операция «%», которая обозначает остаток от деления.
Расширенные операции присваивания
Кроме обычной операции присваивания (=) в JavaScript существуют операции +=, -=, *=, /= и др. Это сокращенные записи. Так a += b полностью эквивалентна a = a + b. Аналогично и с другими такими операциями.
Логические операции
! — отрицание
&& — логическое «и»
|| — логическое «или»
Операнды этих операций должны быть типа boolean, результат — boolean. Операции && и || имеют одну особенность — их правый операнд может и не вычислиться, если результат уже известен по левому операнду. Так, если левый операнд операции && — ложь (false), то правый операнд вычисляться не будет, т.к. результат все равно — ложь.
Это свойство нужно учитывать, особенно тогда, когда правый операнд содержит вызов некоторой функции.
Побитовые логические операции
Это операции
& — побитовое \’и\’
| — побитовое \’или\’
^ — побитовое \’исключающее или\’
~ — побитовое отрицание
Они выполняются для каждой пары битов своих операндов.
Операции сдвига
<< — сдвиг влево
>> — сдвиг вправо
>>> — беззнаковый сдвиг вправо
Эти операции сдвигают значение своего левого операнда на число бит, заданное правым операндом.
Операторы
Операторы используют переменные и данные для вычислений (сложение, вычитание, умножение, деление)
MyWidth/2
Для сложения строк в JavaScript используется знак плюс. Пример:
«Pride » + «and Prejudice»
//В результате получится строка: «Pride and Prejudice»
Операторы условий if…else
Условные операторы содержат в себе логические сравнения и всегда начинаются со служебного слова if (если).
Оператор if…else выполняет один набор действий (операторов) если условие выполняется, и другой набор действий (операторов), если условие не выполняется:
if (app.selection[myCounter].constructor.name==»Rectangle»){
alert(«Выделен прямоугольник»);
}
else {
alert(«Выделен не прямоугольник»);
}
В JavaScript принято выделять фигурными скопками набор операторов, даже если этот набор состоит из одного оператора.
Оператор Switch
Сравнивает значение выражения, указанного в скопках после Switch, со значениями выражений, указанными после case. Если выражения равны между собой, то происходит выполнение каких-то действий. Если значение выражения после switch не равно ни одному из значений выражений во всех case, то происходит набор действий, определенный после default.
myPageItem = app.selection[0];
switch(myPageItem.constructor.name){
case «Rectangle»:
alert(«Вы выбрали прямоугольник»)
break;
case «Oval»:
alert(«Вы выбрали овал»)
break;
case «TextFrame»:
alert(«Вы выбрали текстовый фрейм»)
break;
default:
alert(«Пожалуста выберите прямоугольник, овал или текстовый фрейм»)
break;
}
Циклы
Циклы реализуют многократные повторные процессы. Как будто бы мы сказали Индизайну выполнить действие 20 раз. Такие структуры чаще всего начинаются со служебного слова for.
Формат оператора for такой:
for ([initial-expression]; [condition]; [increment-expression])
{Операторы}
В круглых скопках после for могут стоять три необязательных выражения:
1) инициализация счетчика; 2) условие, которое проверяется каждый раз в начале нового цикла, т.е. повторы действий происходят до тех пор, пока выполняется условие; 3) приращение счетчика.
В фигурных скопках — блок операторов. Пример:
var Sum=0;
for(i=0; i<10; i++) {
Sum=Sum+5;
}
Оператор цикла While выполняет действия пока условие в круглых скопках выполняется (результат выражения есть true). В следующем примере цикл выполняется до тех пор, пока переменная i не достигнет значения 11.
var i = 0;
while(i<11)
{
Sum=Sum+5;
i++;
}
При работе этого оператора сначала проверяется условие. Если оно, верно, выполняется код (первая итерация). Затем снова проверяется условие, и т.д. Возможен вариант, когда цикл не выполнится ни разу.
Оператор цикла do…while (делай до тех пор, пока) выполняет набор действий в зависимости от условия. Условие дальнейшей работы цикла задается в конце блока операторов. Это гарантирует, что цикл выполнится хотя бы один раз (в отличие от предыдущего оператора).
var i = 0;
do {
Sum=Sum+10;
i+=2;
}
while(i<20);
Опрератор Continue
Используется в вышеприведенных трёх циклах. Он прерывает на каком то шаге выполнение цикла и приводит к его рестарту (к проверке условия цикла)
var i = 0;
var myExtension = 0;
while (i < 10)
{
i++;
if (i==7)
continue;
myExtension += myExtensions[i];
}
В этом примере суммируются 10 членов массива myExtensions, за исключением члена массива с индексом 7.
Оператор Break
Используется в циклах. Служит для прерывания цикла и выхода из него
var i = 0;
var myExtension = 0;
while (i < 10)
{
myExtension += myExtensions[i];
if(myExtension>1000)
{
break;
}
i++
}
В этом примере тоже происходит суммирование членов массива, но когда сумма превыcит значение 1000, цикл принудительно прекращается. Break, как вы уже видели, также используется в операторе Switch.
Функции, оператор return
Это скриптовые модули, к которым вы можете обратиться в пределах вашего скрипта. Как правило, в функцию передаются какие-то значения, например, для вычислений, а возвращаться может результат вычислений. Функции позволят избежать многократного повторения одних и тех же строчек скрипта. Общий формат функции такой:
function name([param] [, param] [..., param])
{statements}
Слово function является зарезервированным словом. Ни одна переменная не может называться словом function. Если функция возвращает результаты вычислений, то используется оператор return.
Пример:
function calc(a, b, c)
{
return (a+b+c)/3;
}














Leave your response!
You must be logged in to post a comment.