Онлайн библиотека PLAM.RU


  • Строки кода и комментарии
  • Переменные 
  • Типы данных 
  • Числа
  • Текстовые строки 
  • Объекты
  • Логические данные
  • Null (пустой тип) и undefined (неопределенный тип)
  • Преобразование типов данных 
  • Операторы
  • Унарные операторы 
  • Бинарные операторы 
  • Операторы побитовых логических операций и сдвига
  • Операторы присваивания 
  • Операторы отношения
  • Условные операторы 
  • Операторы циклов 
  • Цикл for
  • Цикл for…in
  • Цикл while
  • Цикл do…while
  • Оператор break
  • Оператор continue
  • Прочие операторы
  • Обработка исключительных ситуаций 
  • Порядок выполнения операторов 
  • Функции
  • Встроенные функции
  • Функции пользователя 
  • Встроенные объекты (классы)
  • Объект Array
  • Объект Date
  • Объект Enumerator
  • Объект Math
  • Объект String
  • Приложение 1

    Справочник по языку JScript

    Язык JScript — это разработанный Microsoft интерпретируемый объектно-ориентированный язык сценариев, который первоначально предназначался для создания динамических HTML-страниц. Отметим, что JScript не является урезанной версией какого-либо другого языка программирования, хотя по синтаксису он похож на языки Java и С. В этом приложении мы кратко рассмотрим те возможности и свойства JScript, которые могут потребоваться при составлении сценариев, выполняемых с помощью WSH, не затрагивая при этом вопросы, связанные с составлением сценариев для HTML-страниц.

    Строки кода и комментарии

    В конце каждого оператора JScript нужно ставить точку с запятой. Например:

    var theSum =0, і;

    sum[0] = 0;

    При этом один оператор может располагаться на нескольких строках, например:

    var

     theSum = 0,

     і;

    sum[0] = 0;

    Комментарии в JScript могут быть двух видов. Для комментария, который занимает не более одной строки, можно использовать символы

    //
    . Например:

    //Этот комментарий занимает всю строку

    theSum=1; //А этот часть строки

    Если же в текст сценария необходимо внести комментарий, расположенный на нескольких строках, то текст такого комментария нужно помещать внутри блока

    /*…*/
    .

    Например:

    /* Это комментарий

     на нескольких

     строках */

    Переменные 

    В сценариях JScript, как и в любом другом языке программирования, можно использовать переменные, обращаясь к ним по имени. При этом переменные могут быть как глобальными (доступными из любого места сценария), так и локальными (область действия ограничивается функцией, в которой они определены).

    Хорошим тоном считается предварительное объявление используемых переменных с помощью ключевого слова

    var
    , хотя это является обязательным условием только для локальных переменных, определенных в функциях. Пример объявления переменной имеет вид:

    var MyVariable;

    При объявлении тип переменной явным образом не указывается (как это делается, например, в языках С или Pascal). Определенный тип переменной присваивается только тогда, когда в нее записывается какое-либо значение.

    Язык JScript является регистро-зависимым, т.е. имена

    MyVariable
    и
    myvariable
    представляют разные переменные. Кроме этого, при выборе имен переменных следует придерживаться следующих правил:

    ? имя переменной должно начинаться с буквы или с символов "

    _
    ", "
    $
    " и может состоять только из букв, цифр, а также символов "
    _
    ", "
    $
    ";

    ? имя переменной не должно совпадать с зарезервированными ключевыми словами языка JScript.

    Список ключевых слов JScript приведен в табл. П1.1.


    Таблица П1.1. Зарезервированные ключевые слова JScript

    break    default false    new    true

    case     delete  finally  null   try

    catch    do      for      return typeof

    class    else    function super  var

    const    enum    if       switch void

    continue export  import   this   while

    debugger extends in       throw  with
     

    Значения переменным в JScript присваиваются с помощью оператора присваивания "=". Например:

    var MyVariable;

    MyVariable = "Привет!";

    Здесь мы объявили переменную

    MyVariable
    и записали в нее текстовую строку. Однако далее в любом месте сценария мы можем присвоить переменной
    MyVariable
    числовое значение (при этом тип переменной изменится), например:

    MyVariable = 10;

    Кроме этого, переменной можно присвоить специальное значение

    null
    :

    MyVariable = null;

    В этом случае переменной

    MyVariable
    не назначается никакого определенного типа (пустой тип). Такое присваивание применяется в тех случаях, когда необходимо объявить переменную и проинициализировать ее, не присваивая этой переменной никакого определенного типа и значения.

    Типы данных 

    В JScript поддерживаются шесть типов данных, главными из которых являются числа, строки, объекты и логические данные. Оставшиеся два типа — это null (пустой тип) и undefined (неопределенный тип).

    Числа

    В сценариях JScript числа могут использоваться в различных форматах.

    ? Целые числа в диапазоне от -999 999 999 999 999 до 999 999 999 999 999. Кроме обычного десятичного, целые числа могут записываться в восьмеричном (префикс "0" и цифры 0–7) или в шестнадцатиричном (префикс "0х", цифры 0–9, символы "А", "В", "С", "D", "Е" и "F') виде. Например, восьмеричное число 0377 и шестнадцатеричное 0xFF равны десятичному 255.

    ? Вещественные числа, которые могут быть записаны как с плавающей точкой (например, -10.567), так и в научной нотации (например, 10567Е-3, что равно 10.567 ("число 10 567 умножить на 10 в степени -3")). Значения вещественных переменных и констант должны лежать в диапазоне от -Number.MAX_VALUE до Number.MAX_VALUE, где параметр Number.MAX_VALUE является специальным числовым значением, которое равно наибольшему вещественному числу, с которым может работать JScript (Number.MAX_VALUE приблизительно равно 1.79Е+308).

    Кроме Number.MAX_VALUE в JScript имеются еще несколько специальных числовых значений.

    ? NaN (Not a Number) — так называемое "нечисло", которое не соответствует никакому числу (это значение генерируется в тех случаях, когда результат выполнения операции не может быть представлен в виде числа, например, при преобразовании строки "1s2" к числовому типу).

    ? Положительная бесконечность Number.POSITIVE_INFINITY (число, которое больше, чем Number.MAX_VALUE).

    ? Отрицательная бесконечность Number.NEGATIVE_INFINITY (число, которое меньше, чем -Number.MAX_VALUE).

    ? Самое близкое число к нулю Number.MIN_VALUE (примерно равно 2.22Е-308). Все числа, большие -Number.MIN_VALUE, но меньшие Number.MIN_VALUE, считаются равными нулю.

    Текстовые строки 

    Текстовые строки — это последовательность символов, заключенных в одинарные или двойные кавычки, например:

    "Привет!"

    'Большой привет!'

    'И тогда он крикнул "Берегись!"'

    Строка может иметь нулевую длину (пустая строка):

    MyVariable = "";

    В JScript можно также использовать специальные комбинации символов, с помощью которых в строки включаются некоторые неотображаемые символы или символы, имеющие специальное значение. Каждая из этих комбинаций (escape-последовательностей) начинается с символа обратной косой черты "

    \
    " (табл. П1.2).


    Таблица П1.2. Специальные комбинации символов

    Escape-последовательность Описание
    \b
    Backspace <<>
    \f
    Перевод формата
    \n
    Перевод строки
    \r
    Возврат каретки
    \t
    Горизонтальная табуляция (<Ctrl>+<I>)
    \'
    Одинарная кавычка
    \"
    Двойная кавычка
    \\
    Обратная косая черта

    Объекты

    В JScript под объектом понимается совокупность свойств и методов. Метод — это внутренняя функция объекта, свойство — это одно значение какого-либо типа или несколько таких значений (в виде массива или объекта), хранящихся внутри объекта. Поддерживаются три вида объектов:

    ? встроенные (внутренние) объекты;

    ? объекты, создаваемые программистом в сценарии;

    ? внешние объекты (например, объекты WSH). Более подробно объекты будут рассмотрены ниже.

    Логические данные

    Логические данные предназначены для выполнения операций сравнения, а также для использования в условных операторах. При этом логические данные имеют только два значения:

    true
    (истина) и
    false
    (ложь). Отметим, что в JScript эти значения никак не соотносятся с числами 1 и 0.

    Null (пустой тип) и undefined (неопределенный тип)

    Если переменная была объявлена с помощью ключевого слова

    var
    , но ей еще ни разу не присваивалось значение, она имеет неопределенный тип
    (undefined)
    :

    var MyVariable;

    После выполнения этой строки переменная

    MyVariable
    имеет тип
    undefined
    . Как уже отмечалось выше, если теперь присвоить переменной значение
    null
    , то эта переменная будет типа
    null
    (пустой тип):

    MyVariable = null;

    Преобразование типов данных 

    Одной из особенностей языка JScript является то, что если в выражениях встречаются переменные разных типов, то автоматически происходит преобразование всех числовых данных в строковое представление. Например, следующие логические выражения будут равны

    true
    :

    "100" == 100

    false == 0

    (здесь "==" означает оператор сравнения). Для преобразования строк в числа нужно применять две специальные функции:

    parseInt
    (преобразование к целому числу) и
    parseFloat
    (преобразование к числу с плавающей запятой). Например, после выполнения следующих строк:

    var s="";

    s=(parseInt("3")-2)+"3";

    значением переменной

    s
    будет строка "
    13
    ".

    Операторы

    В JScript поддерживаются операторы различных типов, которые похожи на операторы языка С.

    Унарные операторы 

    Унарными называются операторы, которые применяются к одному операнду (табл. П1.3).


    Таблица П1.3. Унарные операторы

    Оператор Описание
    -
    Изменение знака на противоположный
    !
    Дополнение. Используется для изменения значения логической переменной на противоположное
    ++
    Увеличение значения числовой переменной на единицу (инкремент). Может применяться как префикс переменной или как ее суффикс
    --
    Уменьшение значения числовой переменной на единицу (декремент). Может применяться как префикс переменной или как ее суффикс

    Бинарные операторы 

    Бинарными называются операторы, которые соединяют два операнда (табл. П1.4).


    Таблица П1.4. Бинарные операторы

    Оператор Описание Оператор Описание
    -
    Вычитание
    /
    Деление
    +
    Сложение
    %
    Вычисление остатка от деления
    *
    Умножение    

    Операторы побитовых логических операций и сдвига

    Эти операторы позволяют производить над числовыми переменными побитовые операции, описанные в табл. П1.5.


    Таблица П1.5. Операторы побитовых логических операций и сдвига

    Оператор Описание 
    &
     
    Логическое И 
    |
     
    Логическое ИЛИ 
    ^
     
    Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ 
    ~
     
    Логическое НЕ 
    >>
     
    Сдвиг вправо 
    <<
     
    Сдвиг влево 
    >>>
     
    Сдвиг вправо с заполнением освобождаемых разрядов нулями
    Замечание 

    Перед использованием операторов из табл. П1.5. значения переменных преобразуются в 32-разрядные целые числа.

    Операторы присваивания 

    В JScript, как и в языке С, для изменения содержимого переменных можно комбинировать оператор присваивания "=" с другими операторами (табл. П1.6).


    Таблица П1.6. Комбинации оператора присваивания и других операторов

    Оператор Описание
    =
    Простое присваивание
    +=
    Увеличение численного значения или конкатенация (склеивание) строк
    -=
    Уменьшение численного значения
    *=
    Умножение
    /=
    Деление
    %=
    Вычисление остатка от деления
    >>=
    Сдвиг вправо
    >>>=
    Сдвиг вправо с заполнением освобождаемых разрядов нулями
    <<=
    Сдвиг влево
    |=
    Логическое ИЛИ
    &=
    Логическое И
    ^=
    Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ

    Операторы отношения

    Операторы отношения используются для сравнения значений нескольких переменных. Эти операторы, описанные в табл. П1.7, могут возвращать только логические значения

    true
    или
    false
    .


    Таблица П1.7. Операторы отношения

    Оператор Условие, при котором возвращается
    true
     
    >
     
    Левый операнд больше правого 
    >=
     
    Левый операнд больше или равен правому 
    <
    Левый операнд меньше правого 
    <=
    Левый операнд меньше или равен правому 
    ==
     
    Левый операнд равен правому 
    !=
     
    Левый операнд не равен правому

    Также в условных операторах применяются логические операторы (табл. П1.8). 


    Таблица П1.8. Логические операторы

    Оператор Описание
    ||
    Оператор отношения "ИЛИ". Возвращает
    true
    , если один из операндов равен
    true
    . В противном случае возвращает
    false
    &&
    Оператор отношения "И". Возвращает
    true
    , если оба операнда равны
    true
    . В противном случае возвращает
    false

    Условные операторы 

    В JScript поддерживается условный оператор

    if…else
    . Общий вид этого оператора показан ниже:

    if (условиевыражение_1

    [else выражение_2]

    При выполнении оператора

    if…else
    оценивается логическое условие, заданное в круглых скобках после ключевого слова
    if
    . Если в результате оценки условия получилось значение true, то выполняется первое выражение. В противном случае выполняется второе выражение (если оно присутствует).

    Оператор

    if…else
    может быть вложенным. Заметим, что если в первом или втором выражении нужно расположить несколько операторов, то их следует выделить фигурными скобками:

    if (х == 5) {

     if (у == 6) z = 17;

    } else z = 20;

    В JScript также существует специальный тип условного оператора, который называется оператором "

    ?:
    ". В общем виде он записывается так:

    условие ? выражение_1 : выражение_2

    При вычислении оператора "

    ?:
    " вначале оценивается условие, расположенное в левой части. Если оно равно
    true
    , то выполняется первое выражение, в противном случае — второе. Например:

    hours += (theHour >=12) ? " РМ" : " AM";
     

    Операторы циклов 

    Microsoft JScript поддерживает несколько типов циклов: цикл

    for
    , цикл
    for…in
    , цикл
    while
    , цикл
    do…while
    . Рассмотрим каждый из них подробнее.

    Цикл for

    В общем случае оператор цикла for имеет три раздела (инициализация, условие и итерация) и записывается следующим образом:

    for ([инициализация;] [условие;] [итерация]){

     тело цикла

    }

    В разделе инициализации обычно выполняется присваивание начальных значений переменным цикла. Здесь можно объявлять новые переменные с помощью ключевого слова

    var
    .

    Во втором разделе задается условие выхода из цикла. Это условие оценивается каждый раз при прохождении цикла. Если в результате такой оценки получается логическое значение

    true
    , то начинают выполняться строки из тела цикла; в противном случае происходит выход из цикла. В том случае, когда условие было ложным с самого начала (при первой проверке), цикл не будет выполнен ни разу.

    Раздел итерации применяется для изменения значений переменных цикла (например, увеличения или уменьшения значения счетчика цикла).

    Пример использования цикла

    for
    приведен в листинге П1.1.

    Листинг П1.1. Пример использования цикла
    for

    var howFar = 11; // Верхний предел для счетчика цикла

    var sum = new Array(howFar); //Массив из 11 элементов, индексы от 0 до 10

    var theSum = 0;

    sum[0] = 0;

    //Цикл выполнится 10 раз

    for(var icount = 1; icount < howFar; icount++) {

     theSum += icount;

     sum [icount] = theSum;

    }

    var newSum = 0;

    //Цикл не выполнится ни разу

    for(var icount = 1; icount > howFar; icount++) {

     newSum += icount;

    }

    var sum = 0;

    //Бесконечный цикл

    for(var icount = 1; icount > 0; icount++) {

     sum += icount;

    }

    Цикл for…in

    Оператор цикла

    for…in
    предназначен для просмотра всех свойств объекта. Для каждого свойства указанный цикл выполняет операторы, содержащиеся в теле цикла:

    for (переменная in объект) {

     тело цикла

    }

    Цикл

    for…in
    можно использовать для вывода на экран всех свойств объекта в одном цикле:

    function objectDisplay(obj) {

     var displayLine;

     for (var prop in obj) {

      displayLine=obj.name+"."+prop+"="+obj[prop];

      WScript.Echo(displayLine)

     }

     WScript.Echo("--------------");

    }

    Цикл while

    Цикл

    while
    похож на цикл
    for
    . В нем также условие выхода из цикла проверяется перед выполнением итерации, однако в цикле
    while
    , в отличие от
    for
    , нет встроенного счетчика и выражения, его изменяющего.

    Оператор

    while
    записывается в следующем виде:

    while (условие) {

     тело цикла

    }

    Пример использования цикла

    while
    приведен в листинге П1.2.

    Листинг П1.2. Пример использования цикла
    while

    var theMoments = "";

    var theCount = 42; // Начальное значение счетчика цикла

    while (theCount >= 1) {

     if (theCount > 1) {

      theMoments = "До взрыва осталось " + theCount + " сек!";

     } else {

      theMoments = "Осталась секунда!";

     }

     theCount--; // Уменьшаем значение счетчика

    }

    theMoments = "ВЗРЫВ!";

    Цикл do…while

    Этот цикл является примером цикла с пост-условием и записывается в следующем виде:

    do {

     тело цикла

    } while (условие);

    В этом случае цикл выполняется до тех пор, пока проверяемое после ключевого слова

    while
    условие не станет ложным (
    false
    ). Так как условие проверяется уже после прохождения тела цикла, то операторы внутри цикла
    do…while
    выполнятся по крайней мере один раз.

    Пример использования цикла

    do…while
    приведен в листинге П1.3.

    Листинг П1.3. Пример использования цикла
    do…while

    var howFar = 11; // Верхний предел для счетчика цикла

    var sum = new Array(howFar); //Массив из 11 элементов, индексы от 0 до 10

    var theSum = 0;

    sum[0] = 0;

    var icount - 1;

    //Цикл выполнится 10 раз

    do {

    theSum += icount; sum [icount] = theSum;

    icount++; }

    while (icount < howFar);

    Внутри цикла любого вида можно применять два специальных оператора:

    break
    и
    continue
    .

    Оператор break

    С помощью оператора

    break
    можно прервать выполнение цикла в любом месте; управление при этом передастся на оператор, следующий сразу за циклом.

    var i = 0;

    while (i < 100) {

     if (i == 50) break;

     i++;

    }

    i++; // Значение i станет равным 51

    Оператор continue

    Оператор

    continue
    прерывает текущую итерацию цикла и начинает новую. В различных видах циклов этот оператор производит следующие действия:

    ? в циклах

    while
    и
    do…while
    проверяется условие цикла и если оно равно
    true
    , то вновь выполняется тело цикла;

    ? в цикле

    for
    изменяется значение счетчика в разделе итерации, проверяется условие цикла и если оно равно
    true
    , то тело цикла выполняется вновь;

    ? в цикле

    for…in
    переменная цикла переходит к следующему полю объекта, и тело цикла выполняется вновь.

    Пример использования оператора

    continue
    :

    var s = "", i=0;

    while (i < 10) {

     i++;

     // Пропускаем число 5

     if (i==5) {

      continue;

     }

    }

    s += i;

    Прочие операторы

    Рассмотрим еще несколько часто применяемых операторов (см. табл. П1.9). 


    Таблица П1.9. Прочие операторы

    Оператор Описание
    .
    Точка. Применяется для доступа к свойству объекта или для вызова его метода
    []
    Квадратные скобки. Применяются для индексирования массива
    ()
    Скобки. Применяются либо для изменения порядка вычисления выражений, либо для передачи параметров функциям
    ,
    Запятая. Применяется для многократных вычислений

    С помощью оператора "

    ,
    " можно, например, в разделе итерации цикла
    for
    изменять значение сразу нескольких переменных:

    var i, j;

    j = 10;

    for (i = 0; i<=10; i++, j--) {

     …

    }

    Обработка исключительных ситуаций 

    Во время выполнения сценария могут возникать различные исключительные ситуации (например, деление на ноль или попытка открыть несуществующий файл), которые приводят к ошибкам времени выполнения — при этом на экран выводится диалоговое окно с сообщением об ошибке и выполнение сценария прекращается.

    Существует возможность написать код сценария таким образом, чтобы исключительные ситуации не приводили к завершению работы, а обрабатывались бы внутри сценария. Для осуществления подобной обработки исключительных ситуаций в JScript необходимо использовать конструкцию

    try…catch
    . Синтаксис следующий:

    try

     Защищенный блок

    catch (except)

     Блок обработки исключительных ситуаций

    После ключевого слова

    try
    здесь записываются те операторы, при выполнении которых потенциально может возникнуть ошибка. В качестве параметра
    except
    надо использовать любое имя переменной (предварительно объявлять эту переменную не нужно). Если в защищенном блоке не возникло ошибки, то значение этой переменной будет равно нулю; в случае же возникновения исключительной ситуации управление сразу передается в блок
    catch
    , при этом переменная
    except
    как экземпляр объекта
    Error
    будет содержать два свойства:
    error
    — числовой код возникшей ошибки и
    description
    — краткое описание ошибки.

    В качестве примера приведем часть сценария, в которой происходит обработка исключительных ситуаций при подключении сетевого диска:

    try {

     //Подключаем сетевой диск

     WshNetwork.MapNetworkDrive(Drive, NetPath);

    } catch (e) {

     //Обрабатываем возможные ошибки

     if (e != 0) {

      //Выводим сообщение об ошибке

      Mess="Ошибка при подключении диска " + Drive + " к " + NetPath+

       "\nКод ошибки: "+е.number+"\nОписание: "+е.description;

      WshShell.Popup(Mess, 0, "Подключение сетевого диска", vbCritical);

     }

    }

    Порядок выполнения операторов 

    В табл. П1.10 операторы языка JScript расположены по старшинству, т.е. в составных операторах первыми будут выполняться те из них, которые стоят в этой таблице выше. Если операторы расположены в одной строке таблицы, то они выполняются слева направо.


    Таблица П1.10. Порядок выполнения операторов

    Оператор Описание
    . [] ()
    Доступ к полю объекта, индексирование в массиве, вызов функции
    ++ -- - ~ !
    Унарные операторы
    * / %
    Умножение, деление, вычисление остатка от деления
    + - +
    Сложение, вычитание, конкатенация строк
    << >> >>>
    Битовые сдвиги
    < <= > >=
    Меньше, меньше или равно, больше, больше или равно
    == !=
    Равенство, неравенство
    &
    Логическое И
    ^
    Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ
    |
    Логическое ИЛИ
    &&
    Оператор отношения И
    ||
    Оператор отношения ИЛИ
    ?:
    Условный оператор
    = += -= *= /= %= >>= >>>= <<= |= &= ^=
     Присваивание
    ,
    Многократное вычисление

    Функции

    Функции в JScript, как и в других алгоритмических языках, позволяют объединить несколько операций под одним именем. В случае необходимости функция может быть вызвана из любого места сценария.

    В сценариях JScript поддерживаются два вида функций: встроенные функции и функции пользователя, которые вы пишете сами. 

    Встроенные функции

    В табл. П1.11 описаны встроенные функции языка JScript, которые в сценарии можно вызывать в любом месте без предварительного описания.


    Таблица П1.11. Встроенные функции

    Функция Описание 
    escape(charstring)
     
    Кодирование строки
    charstring
    с применением URL-кодировки. При этом все специальные неотображаемые символы преобразуются к виду %хх, где хх — шестнадцатеричный код символа 
    eval(codestring)
     
    Интерпретация и выполнение кода JScript, содержащегося в строке
    codestring
    . Эта функция позволяет динамически создавать текст сценария
    isFinite(number)
    Возвращает
    true
    , если параметр
    number
    является корректным числом. В противном случае возвращает
    false
    isNaN(numvalue)
    Возвращает
    true
    , если параметр
    numvalue
    имеет специальное значение NaN (см. описание числового типа). В противном случае возвращает
    false
    . Эту функцию можно применять для оценки значений; возвращаемых функциями преобразования типов
    parseInt
    и
    parseFloat
    parseFloat(numstring)
    Преобразовывает строку
    numstring
    в число с плавающей точкой
    parseInt(numstring, [radix])
    Преобразовывает строку
    numstring
    в целое число. Целочисленный параметр
    radix
    может принимать значения от 2 до 36, которые указывают основание счисления для числа, содержащегося в numstring. Если
    radix
    не указан, то строки с префиксом
    '0х'
    задают шестнадцатеричные числа, а строки с префиксом '
    0
    ' — восьмеричные. Все остальные строки определяют десятичные числа
    unescape(charstring)
    Выполняет действие, противоположное действию функции
    escape
    , т.е. перекодирует строку
    charstring
    из URL-кодировки в текстовую строку

    Функции пользователя 

    Функции, определяемые пользователем, могут находиться в любом месте сценария и иметь произвольное число параметров (аргументов). Общий вид определения функции имеет вид:

    function Имя_функции([параметр1] [, параметр2] [... , параметрN]) {

     …

     Тело функции

     …

     [return значение;]

    }

    Ключевое слово

    return
    позволяет функции вернуть значение любого допустимого типа. Например, приведенная ниже функция
    MyFunction
    возвращает
    true
    , если оба ее аргумента меньше 10:

    function MyFunction(х,у) {

     if ((х<10) && (у<10)) return true

     else return false;

    }

    Встроенные объекты (классы)

    Как уже отмечалось в самом начале раздела, JScript является объектно-ориентированным языком, поэтому математические вычисления, работа со строками, датой и временем, а также такими структурами, как массивы и коллекции, осуществляются с помощью соответствующих встроенных объектов. В табл. П1.12 описаны некоторые объекты, которые могут быть полезны при создании сценариев с помощью WSH.


    Таблица П1.12. Некоторые встроенные объекты JScript

    Объект Описание
    Array
    Создание и работа с массивами данных произвольного типа
    Date
    Работа с данными, содержащими дату или время
    Enumerator
    Работа с коллекциями данных произвольного типа
    Math
    Выполнение математических вычислений
    String
    Работа с текстовыми строками

    Для того чтобы в сценарии использовать встроенный объект, необходимо создать переменную, с помощью которой можно будет получить доступ к свойствам и методам этого объекта. Для создания большинства переменных такого вида применяется оператор

    new
    и специальная функция — конструктор нужного объекта. Название конструктора всегда совпадает с названием соответствующего встроенного объекта. Приведем пример создания объектов
    Date
    и
    Array
    !

    var d;

    d = new Date();

    var a;

    a = new Array(10);

    Отметим, что объекты string можно создавать, просто записывая в кавычках значение строки:

    var s;

    s = "Привет!";

    Опишем объекты, приведенные в табл. П1.12, более подробно.

    Объект Array

    Новый объект встроенного класса

    Array
    можно создать с помощью оператора
    new
    следующими способами:

    ?

    new Array()
    — создание массива нулевой длины;

    ?

    new Array(N)
    — создание массива длины
    N
    ;

    ?

    new Array(а0, a1, ..., aN)
    — создание массива длины
    N+1
    c элементами
    а0
    ,
    a1
    , ...,
    aN
    .

    Например:

    var A1, А2, A3;

    A1 = new Array();

    A2 = new Array(3);

    A3 = new Array(0, "Строка", 2.5);

    Нумерация элементов в массивах всегда начинается с нуля. После того как массив создан и проинициализирован, обращаться к его элементам можно с помощью обычного оператора индексации [], например:

    A3[1] = А3[0] + A3[2];

    Длину массива, т.е. число содержащихся в нем элементов, можно узнать с помощью свойства

    length
    объекта
    Array
    . Для того чтобы динамически изменить длину массива (уменьшить или увеличить), достаточно просто записать соответствующее значение в свойство length:

    var А;

    А = new Array(1,2,3,4,5); // Длина массива А равна 5

    A.length = 3; // Теперь длина массива А равна 3

    Некоторые наиболее часто используемые методы встроенного объекта

    Array
    описаны в табл. П1.13.


    Таблица П1.13. Методы объекта

    Array

    Метод Описание
    a1.concat(а2)
    Возвращает новый массив, являющийся результатом объединения (склеивания) двух массивов:
    a1
    (его элементы идут первыми) и
    а2
    (его элементы идут после элементов массива
    a1
    )
    join(separator)
    Возвращает строку, содержащую все идущие друг за другом элементы массива, разделенные символом, указанным в параметре
    separator
    reverse()
    Располагает элементы массива в обратном порядке (первый меняется местами с последним, второй — с предпоследним и т.д.). Новый массив при этом не создается
    slice(start, [end])
    Возвращает часть массива, начиная с элемента с индексом
    start
    , заканчивая элементом с индексом
    end
    . Если в качестве
    end
    указано отрицательное число, то оно задает смещение от конца массива. Если параметр
    end
    не указан, то берутся все элементы массива, начиная с элемента с индексом
    start
    sort([sortfunction])
    Возвращает массив с отсортированными элементами. Параметр
    sortfunction
    определяет имя функции, используемой для сортировки; если этот параметр опущен, то сортировка производится в порядке увеличения ASCII-кодов элементов массива

    Пример использования методов объекта Array приведен в листинге П1.4.

    Листинг П1.4. Пример использования методов объекта
    Array

    var A1, А2, A3;

    A1 = new Array(2);

    A2 = new Array(2,3,4,5);

    A1[0] = 0;

    A1[1] = 1;

    A3 = A2.concat(A1); // A3=(2,3,4,5,0,1)

    A3.sort(); // A3=(0,1,2,3,4,5)

    Объект Date

    Для создания нового объекта встроенного класса

    Date
    используется один из трех конструкторов.

    Конструктор первого вида позволяет создать объект, в котором хранится информация о текущих дате и времени:

    var d;

    d = new Date();

    Здесь время задается по Гринвичу, т.е. с использованием времени (UCT — Universal Coordinated Time).

    Конструктор второго вида имеет единственный параметр:

    var d;

    d = new Date(nMilliseconds);

    Параметр

    nMilliseconds
    задает дату в миллисекундах, считая от 1 января 1970 года.

    Конструктор третьего вида предназначен для раздельного задания компонентов даты и имеет следующий вид:

    var d;

    d = new Date(year, month, date [, hours [, min [, sec [, ms]]]]);

    Значения параметров последнего конструктора приведены в табл. П1.14.


    Таблица П1.14. Параметры конструктора

    Date

    Параметр Описание
    year
    Год в четырехзначном формате, например 1998 (но не 98)
    month
    Номер месяца от 0 (январь) до 11 (декабрь)
    date
    Календарная дата в диапазоне от 1 до 31
    hours
    Час дня в диапазоне от 0 до 23
    min
    Минуты в диапазоне от 0 до 59
    sec
    Секунды в диапазоне от 0 до 59
    ms
    Миллисекунды в диапазоне от 0 до 999

    Наиболее часто используемые методы объекта

    Date
    описаны в табл. П1.15.


    Таблица П1.15. Некоторые методы объекта

    Date

    Метод Описание
    getDate()
    Возвращает календарную дату в диапазоне от 1 до 31
    getDay()
    Возвращает номер дня недели (0 для воскресенья, 1 — для понедельника и т.д.)
    getFullYear()
    Возвращает четырехзначный номер года
    getHours()
    Возвращает число часов (отсчет идет с полуночи)
    getMilliseconds()
    Возвращает число миллисекунд
    getMinutes()
    Возвращает число минут (отсчет идет с начала часа)
    getMonth()
    Возвращает число месяцев (отсчет идет с января)
    getSeconds()
    Возвращает число секунд (отсчет идет с начала минуты)
    getTime()
    Определение времени для объекта Date. Возвращает количество миллисекунд, прошедших с 1 января 1970 года
    getTimezoneOffset()
    Возвращает смещение локального времени относительно времени по Гринвичу (в миллисекундах)
    parse(dateVal)
    Возвращает число миллисекунд, прошедших с полуночи 1 января 1970 года по время, заданное параметром
    dateVal
    . Для вызова метода
    parse
    необязательно создавать объект класса
    Date
    , достаточно просто сослаться на имя этого класса:
    n = Date.parse("10 May 2001 13:00:00");
    Параметр
    dateVal
    может задаваться в нескольких форматах (подробнее см документацию по языку JScript)
    setDate(date)
    Устанавливает календарную дату. Параметр
    date
    может принимать любые положительные или отрицательные значения. Если значение
    date
    больше, чем количество дней в месяце, который хранится в объекте
    Date
    , или
    date
    является отрицательным числом, то календарная дата устанавливается в число, равное разности параметра
    date
    и числа дней в этом месяце
    setFullYear(year)
    Устанавливает номер года, заданный параметром
    year
    setHours(hours)
    Устанавливает количество часов, заданное параметром
    hours
    . Параметр
    hours
    может принимать любые положительные или отрицательные значения (при необходимости происходит соответствующее изменение даты, записанной в объекте класса
    Date
    )
    setMilliseconds(ms)
    Устанавливает количество миллисекунд, заданное параметром
    ms
    . Параметр
    ms
    может принимать любые положительные или отрицательные значения (при необходимости происходит соответствующее изменение даты, записанной в объекте класса
    Date
    )
    setMinutes(min)
    Устанавливает количество минут, заданное параметром
    min
    . Параметр
    min
    может принимать любые положительные или отрицательные значения (при необходимости происходит соответствующее изменение даты, записанной в объекте класса
    Date
    )
    setMonth(mon)
    Устанавливает номер месяца, прошедшего с начала года. Параметр
    mon
    может принимать любые положительные или отрицательные значения (при необходимости происходит соответствующее изменение даты, записанной в объекте класса
    Date
    )
    setSeconds(sec)
    Устанавливает количество секунд, заданное параметром
    sec
    . Параметр
    sec
    может принимать любые положительные или отрицательные значения (при необходимости происходит соответствующее изменение даты, записанной в объекте класса
    Date
    )
    setTime(ms)
    Устанавливает дату, соответствующую количеству миллисекунд (параметр
    ms
    ), прошедших с 1 января 1970 года
    toGMTString()
    Преобразует дату в строку и возвращает результат в стандартном формате времени по Гринвичу (Greenwich Mean Time, GMT)
    ToLocaleString()
    Преобразует дату в строку и возвращает результат в формате локального времени
    ToUTCString()
    Преобразует дату в строку и возвращает результат в формате UTC
    UTC(year, month, date[, hours[, min[, see [,ms]]]])
    Преобразует дату, заданную параметрами метода, в количество миллисекунд, прошедшее с полуночи 1 января 1970 года. При использовании этого метода, как и метода
    parse
    , объект класса
    Date
    создавать необязательно:
    n = Date.UTC(year, month, date);

    Пример использования методов объекта

    Date
    приведен в листинге П1.5.

    Листинг П1.5. Пример использования методов объекта
    Date

    var d;

    var s = "";

    d = new Date();

    s = "Дата: " + d.getDate() + "." + d.getMonth() + "." + d.getYear(); s += "\n";

    s += "Время: " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();

    После выполнения этих строк в переменной

    s
    будут записаны текущие дата и время.

    Объект Enumerator

    С помощью объекта

    Enumerator
    можно получить доступ к любому элементу коллекции (в VBScript для этого служит цикл
    For…Each
    ). Коллекцией в языке JScript называется множество элементов, которое отличается от массива тем, что к элементам коллекции нельзя получить прямой доступ с помощью индексов — можно только перемешать указатель текущего элемента на самый первый или следующий относительно текущего элемент.

    Для создания нового объекта встроенного класса

    Enumerator
    используется конструктор следующего вида:

    var е;

    е = new Enumerator(collection);

    Здесь параметр

    collection
    указывает на коллекцию, для доступа к элементам которой и создается объект класса
    Enumerator
    . Сами коллекции обычно являются свойствами других объектов.

    Методы объекта

    Enumerator
    представлены в табл. П1.16 (свойств у этого объекта нет).


    Таблица П1.16. Методы объекта

    Enumerator

    Метод Описание 
    atEnd()
     
    Возвращает
    true
    , если указатель текущего элемента находится на элементе, следующем за последним экземпляром коллекции, либо коллекция пуста, либо текущий элемент не определен. В противном случае возвращается
    false
     
    item()
     
    Возвращает значение текущего элемента коллекции. Если коллекция пуста или текущий элемент не определен, возвращается неопределенное значение
    undefined
     
    moveFirst()
     
    Перемещает указатель на первый элемент коллекции. Если в коллекции нет элементов, текущий элемент принимает неопределенное значение
    undefined
     
    moveNext()
     
    Перемещает указатель на следующий элемент коллекции. Если перед применением этого метода указатель находился на последнем элементе коллекции, либо коллекция пуста, текущий элемент принимает неопределенное значение
    undefined
     

    Пример, поясняющий схему применения объекта

    Enumerator
    , приведен в листинге П1.6.

    Листинг П1.6. Пример использования
    Enumerator

    //Объявляем переменные

    var FSO, Folder, Files, s;

    //Создаем объект FileSystemObject

    FSOWScript.CreateObject("Scripting.FileSystemObject");

    //Создаем объект Folder для корневого каталога диска С:

    Folder=FSO.GetFolder("С:\\")?

    //Создаем коллекцию файлов каталога "Мои документы"

    Files=new Enumerator(Folder.Files);

    //Цикл по всем файлам

    for (; !Files.atEnd(); Files.moveNext())

     //Добавляем строку с именем файла

     s+=Files.item().Name+"\n";

    //Выводим полученные строки на экран

    WScript.Echo(s);

    Объект Math

    Встроенный класс

    Math
    применяется для математических вычислений и содержит основные математические константы и функции.

    Замечание

    Объект

    Math
    создается сервером сценариев автоматически и не может быть создан при помощи оператора
    new
    , как другие встроенные объекты. Все методы и свойства этого объекта доступны из сценария без какого-либо предварительного объявления.

    Свойства объекта

    Math
    (все они являются математическими константами) описаны в табл. П1.17.


    Таблица П1.17. Свойства объекта

    Math

    Свойство Описание
    Е
    Константа е. Приблизительное ее значение равно 2,718
    LN2
    Натуральный логарифм числа 2 (приблизительно 0,693)
    LN10
    Натуральный логарифм числа 10 (приблизительно 2,302)
    LOG2E
    Логарифм числа е по основанию 2 (примерно 1,442)
    LOG10E
    Логарифм числа е по основанию 10 (примерно 0,434)
    PI
    Число ?, т.е. константа с приблизительным значением, равным 3,142
    SQRT1_2
    Корень квадратный из ? (примерно 0,707)
    SQRT2
    Корень квадратный из 2 (примерно 1,414)

    Методы объекта

    Math
    (они являются стандартными математическими функциями) приведены в табл. П1.18.


    Таблица П1.18. Методы объекта

    Math

    Метод Описание
    abs(х)
    Возвращает абсолютное значение числа
    х
    acos(х)
    Возвращает арккосинус числа
    х
    asin(х)
    Возвращает арксинус числа
    х
    atan(x)
    Возвращает арктангенс числа
    х
    atan2(у,x)
    Вычисляет угол в радианах от оси
    до точки (
    у, х
    ). Возвращаемое значение лежит в диапазоне от -? до ?
    ceil(x)
    Возвращает наименьшее целое значение, большее или равное аргументу
    х
    cos(x)
    Возвращает косинус числа
    х
    exp(x)
    Экспоненциальная функция, возвращает число е, возведенное в степень
    х
    floor(x)
    Возвращает наибольшее целое значение, меньшее или равное аргументу х
    log(x)
    Возвращает натуральный логарифм числа
    х
    max(x1, x2)
    Возвращает наибольшее из двух значений
    x1
    и
    х2
    min(x2, x2)
    Возвращает наименьшее из двух значений
    x1
    и
    х2
    pow(y,x)
    Возводит число
    у
    в степень
    х
    и возвращает полученный результат
    random()
    Возвращает случайное число в интервале от 0 до 1
    round(x)
    Выполняет округление значения аргумента
    х
    до ближайшего целого. Если десятичная часть числа равна 0,5 или больше этого значения, то округление выполняется в бoльшую сторону, иначе — в меньшую
    sin(x)
    Возвращает синус числа х
    sqrt(x)
    Вычисляет квадратный корень из числа х и возвращает полученное значение
    tan(x)
    Возвращает тангенс числа х

    Приведем пример использования свойств и методов встроенного объекта

    Math
    :

    var x,y,z;

    х = 12;

    у = Math.sqrt(х);

    z = 2*Math.PI * Math.pow(у, x);

    Объект String

    Встроенный объект

    String
    предназначен для выполнения различных операций над текстовыми строками. Обычно объекты класса
    String
    создаются просто с помощью записи в переменную текстового литерала:

    var s1, s2;

    s1 = "Это строка";

    s2 = "Это тоже строка";

    Также можно создавать такие объекты с помощью оператора

    new
    :

    var s1, s2;

    s1 = new String("Это строка");

    s2 = new String("Это тоже строка");

    Объект

    String
    имеет свойство
    length
    , в котором хранится длина строки.

    Некоторые методы объекта

    String
    , не связанные с тегами HTML, приведены в табл. П1.19.


    Таблица П1.19. Некоторые методы объекта

    String

    Метод Описание 
    charAt(index)
     
    Возвращает символ с индексом
    index
    из строки. Нумерация символов в строке начинается с нуля, поэтому допустимыми значениями параметра
    index
    являются числа из диапазона от нуля до числа, на единицу меньшего длины строки 
    charCodeAt(index)
     
    Выбирает символ с индексом
    index
    из строки и возвращает этот символ в кодировке Unicode 
    s1.concat(s2)
     
    Возвращает строку, являющуюся результатом конкатенации (склеивания) строк
    s1
    и
    s2
    (то же самое, что
    s1+s2
    fromCharCode(c1,...,cN)
     
    Возвращает строку, состоящую из Unicode-символов с кодами
    c1
    ,...,
    cN
     
    s.indexOf(substr, startindex)
     
    Возвращает индекс символа, с которого начинается первое вхождение подстроки
    substr
    в строку
    s
    . Если подстрока не найдена, возвращается -1. Параметр
    startindex
    задает номер символа, с которого следует начинать поиск. Если этот параметр не задан, то поиск производится с начала строки. Поиск производится слева направо 
    s.lastIndexOf(substr, startindex)
    To же самое, что метод
    indexOf
    , но поиск производится справа налево, т.е. возвращается номер последнего символа, с которого начинается вхождение подстроки
    substr
    в строку
    s
    s.match(rgExp)
    Возвращает в виде массива результат поиска в строке
    s
    подстроки, задаваемой регулярным выражением
    rgExp
    (поиск с использованием регулярных выражений описан в документации по JScript)
    replace(rgExp, replaceText)
    Возвращает копию строки, в которой произведены необходимые замены текста. Шаблон для поиска задается регулярным выражением
    rgExp
    , строка для замены — параметром
    replaceText
    . Первоначальная строка методом
    replace
    не изменяется
    search(rgExp)
    Возвращает номер первого символа в строке, с которого начинается подстрока, удовлетворяющая регулярному выражению
    rgExp
    slice(start, [end])
    Возвращает часть строки, начиная с позиции
    start
    и заканчивая символом, стоящим в позиции с номером
    end
    (или последним символом в строке, если параметр
    end
    опущен). Если в качестве
    end
    указано отрицательное число, то этот параметр задает смещение от конца массива
    s.split(str)
    Возвращает массив строк, полученных в результате разбиения строки
    s
    на подстроки. Параметр
    str
    задает строку или объект Regular Expression, которые определяют символ, являющийся признаком начала разбиения
    substr(start [, length])
    Возвращает подстроку, начинающуюся с позиции
    start
    и имеющую длину
    length
    . Если в качестве
    length
    указано отрицательное число или ноль, то возвращается пустая строка
    substring(start, end)
    Возвращается подстрока, состоящая из символов, начинающихся с позиции
    start
    и заканчивающихся позицией
    end
    . В качестве
    start
    и
    end
    могут быть указаны строки, которые в этом случае автоматически преобразуются в числа
    toLowerCase()
    Возвращает строку, в которой все алфавитные символы преобразованы к нижнему регистру
    toUpperCase()
    Возвращает строку, в которой все алфавитные символы преобразованы к верхнему регистру

    Приведем пример использования методов объекта

    String
    :

    var s1, s2, s3;

    s1 = "Первая строка";

    s2 = "Вторая строка";

    s1 = s1.toUpperCase();

    s2 = s2.substr(0, 6);

    s1 = s1.slice(7);

    s3 = s2 + " " + s1;

    После выполнения этих строк значением переменной

    s3
    будет строка "
    Вторая строка
    ". 









    Главная | Контакты | Нашёл ошибку | Прислать материал | Добавить в избранное

    Все материалы представлены для ознакомления и принадлежат их авторам.