Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Специальные встроенные функции




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

Например, escape()и unescape()используются для перевода кода HTML и спецсимволов, то есть символов, которые нельзя непосредственно размещать в тексте. К примеру, символы "<" и ">", применяются для обозначения HTML-тэгов.

Функция escapeпринимает в параметре спецсимволы, а возвращает ESC-код символа. Каждый код ESC-код начинается со знака процента (%) и последующим двухзначным числом. Функция unescapeявляется инверсионной. В качестве параметра вводится ESC-код, а возвращает символ.

Еще одна встроенная функция - eval(), которая выполняет любое правильное математическое выражение, представленное в виде строки. Функция eval()имеет один аргумент - выражение для выполнения.

 

var anExpression = "6 * 9 % 7";

var total = eval(anExpression); // Вычисляетвыражение, равно 5.

var yetAnotherExpression = "6 * (9 % 7)";

total = eval(yetAnotherExpression) // Вычисляетвыражение, равно 12.

var totality = eval("Текст."); // Возвращает ошибку.

 

Создание собственных функций

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

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

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

 

var epsilon = 0.0000000000001; // "Машинное эпсилон".

var triplet = false;

function integerCheck(a, b, c) { // Функцияпроверкиприцелыхчислах.

       if ( (a*a) == ((b*b) + (c*c)) ) { // Кодпроверки.

                   triplet = true;

       }

} // Конец функции проверки при целых числах.

function floatCheck(a, b, c) { // Функция проверки при числах с плавающей точкой.

       var theCheck = ((a*a) - ((b*b) + (c*c))) // Контрольное число.

       if (theCheck < 0) { // Вычисление модуля контрольного числа.

                   theCheck *= -1;

       }

       if (epsilon > theCheck) { // Сравнение отклонения с допустимой погрешностью!

                   triplet = true;

       }

} // Конец функции проверки при числах с плавающей точкой.

function checkTriplet(a, b, c) { // Проверкатриплета.

                   //Первым делом, присвоим "a" наибольшее значение из трех входных чисел.

       var d = 0; // Временная переменная.

       if (c > b) { // При c > b, меняем местами.

                   d = c;

                   c = b;

                   b = d;

       } // Иначе - не меняем.

       if (b > a) { // При b > a, меняем местами.

                   d = b;

                   b = a;

                   a = d;

       } // Иначе - не меняем.

       // Сторона "a" является гипотенузой.

       if (((a%1) == 0) && ((b%1) == 0) && ((c%1) == 0)) { // Проверка чисел - целые ли они?

                   integerCheck(a, b, c); // Функция для целых чисел.

       } else

                   floatCheck(a, b, c); // Иначе вызываем функцию для чисел с плавающей точкой

} // Окончание проверки правила Пифагора (триплета).

// Практическая проверка - объявляем три переменные.

var sideA = 5;

var sideB = 5;

var sideC = Math.sqrt(50);

checkTriplet(sideA, sideB, sideC); // Функция проверки на триплет.

 

Массивы

Индексация массивов

Массивы в JScript разряжены. Так, если в массиве три значения пронумерованы как 0, 1 и 2, вы можете создать элемент 50, не волнуясь об элементах от 3 до 49. Если массив имеет автоматическую переменную размера, переменная размера установлена как 51, несмотря на размер 4. Конечно, можно создавать массивы без разрывов в нумерации элементов, но это не обязательное условие. Фактически в JScript, массивы вообще могут не иметь нумерации.

В JScript объекты и массивы идентичны друг другу. Настоящая разница не в данных, а скорее в адресации элементов массива или свойств и методов объекта.

 

Адресация массивов

Существует два основных способа для адресации элементов массива. Обычно, для адресации используют индексы. Индексы содержат числовое значение или выражение, которое оценивается как неотрицательное целое. В следующем примере предполагается, что переменная entryNum определена, и ей присвоено значение в другом месте в сценарие. theListing = addressBook[entryNum]; theFirstLine = theListing[1]; Метод адресации эквивалентен методу адресации объектов, хотя при адресации объекта, индекс должен быть именем существующего свойства. Если такого свойства нет, возникает ошибка при исполнении кода.

Второй способ адресации массива состоит в том, чтобы создать объект (массив), который содержит свойства, которые пронумерованы числами в цикле. В следующем примере создается два массива, один для имени, второй для адреса, внесенных в список addressBook . Каждый из них содержит четыре свойства. Образец theName , например, формируется от [Name1] до [Name4] свойств theListing , может содержать "G." "Edward" "Heatherington" "IV" или "George" "" "Sand" "".

 

theListing = addressBook[entryNum];

for (i = 1; i < 4; i++) {

       theName[i] = theListing["Name" + i];

       theAddress[i] = theListing["Address" + i];

}

 

В то же время код мог бы легко быть написан в "dot"-стиле системы обозначений (то есть адресуя theListing , theName и theAddress скорее как объекты, чем матрицы, через точку), но подобное не всегда возможно. Иногда какое-либо свойство не может существовать до времени выполнения, или нельзя его узнать заранее. Например, если массив addressBook упорядочен по фамилии вместо нумерации, пользователь будет вероятно вводить названия " на лету", в то время как сценарий функционирует, просматривая людей. Следующий пример показывает применение определений функций в другом месте сценария.

 

theListing = addressBook[getName()];

theIndivListing = theListing[getFirstName()];

 

Это ассоциативная адресация массива, то есть адресация посредством полностью произвольных строк. Объекты в JScript являются ассоциативными массивами. Хотя чаще всего используется "dot"-стиль, это не всегда требуется.

           

       2.2Объект

Что такое Объект?

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

 

Объекты и Массивы

В JScript, обработка объектов и массивов идентична. Вы можете обратиться к любой части объекта (его свойствам и методам) либо по имени, либо по индексу. Нумерация индексов в JScript начинается с нуля. Для удобства работы, частям можно присвоить имена.

Существует несколько вариантов обращений. Следующие выражения эквивалентны.

 

theWidth = spaghetti.width;

theWidth = spaghetti[3]; // [3] является индексом "width".

theWidth = spaghetti["width"];

 

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

theWidth = spaghetti.3;

В случаях, когда объект является свойством другого объекта, обращение образуется прямым путем.

var init4 = toDoToday.shoppingList[3].substring(0,1); // массив shoppingList - свойство toDoToday.

 

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

 

var multTable = new Array(17); // Создание оболочки для таблицы

for (var j = 0; j < multTable.length; j++) { // Подготовка к заполнению строками

       var aRow = new Array(17); // Создание строки

       for (var i = 0; i < aRow.length; i++) { // Подготовка к заполнению строки

                   aRow[i] = (i + " times " + j + " = " + i*j); // Создание и размещение одного значения

       }

       multTable[j] = aRow; // Заполнение таблицы строкой

}

 

Обращение к каждому элементу производится указанием нескольких индексов

var multiply3x7 = multTable[3][7];

Следующее выражение вызовет ошибку.

var multiply3x7 = multTable[3, 7];

 

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

В Microsoft JScript девять встроенных объектов. ЭтоArray, Boolean, Date, Function, Global, Math, Number, ObjectиString. Каждый из объектов имеет свои методы и свойства, подробно описанные в справочнике языка. Здесь приводится описание объектов.

 

Объект Array - Массив

В JScript обработка массивов происходит подобно обработки объектов. Индекс в массиве, эквивалентный свойству объекта, может быть вызван по порядковому номеру (или по имени, ассоциированному с ним). Создания нового массива происходит с помощью оператора newи конструктора Array()( constructor ), подобно приведенному ниже примеру.

 

var theMonths = new Array(12) { theMonths[0] = "Jan";

                                                      theMonths[1] = "Feb";

                                                      theMonths[2] = "Mar";

                                                      theMonths[3] = "Apr";

                                                      theMonths[4] = "May";

                                                      theMonths[5] = "Jun";

                                                      theMonths[6] = "Jul";

                                                      theMonths[7] = "Aug";

                                                      theMonths[8] = "Sep";

                                                      theMonths[9] = "Oct";

                                                      theMonths[10] = "Nov";

                                                      theMonths[11] = "Dec"; }

 

При создании массива, JScript включает в объект Arrayсвойство размера ( length ), которое характеризует количество элементов массива. Если массив не имеет элементов, то его размер равен нулю. Если задан номер индекса, размер массива равно ему. В следующем примере

 

var theMonths = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

var l = theMonths.length;

document.write(l);

 

размер массива равен 12.

 

Объект String - Строка

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

 

aString = "0123456789";

var aChunk = aString.substring(4, 7); // aChunk равно "456".

var aNotherChunk = aString.substring(7, 4); // aNotherChunk равно "456".

// Применение метода в созданном ранее массиве:

firstLetter = theMonths [5].substring(0,1);

// переменной firstLetter присвоенозначение "J".

 

Еще одно свойство объекта String- свойство длины ( length) строки, значение которого соответствует количеству символов в строке, значение 0 соответствует пустой строке. Это значение может быть использовано в вычислениях.

 

var howLong = "Hello World".length // Возвращает значение 11, которое присваивается переменной howLong.

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 532.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...