Что такое функция?
Функции в Microsoft JScript выполняют определенные действия. Они могут возвращать некоторый результат, например результат вычислений или сравнения
Функции исполняют при вызове определенный блок инструкций. Это позволяет однажды определить функцию, а в дальнейшем вызывать ее когда потребуется.
Вы передаете данные функции, включая их в круглые скобки после имени функции. Данные в круглых скобках называются параметрами. В некоторых функциях нет параметров вообще; в некоторых - один параметр; иногда параметров несколько.
В JScript имеется два вида функций: встроенные и определяемые.
Специальные встроенные функции
Язык 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 имеется описание других встроенных функций.
Создание собственных функций
Вы можете создавать собственные функции и вызывать их, когда потребуется. Определение функции состоит из объявления параметров и блока инструкций 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); // Функция проверки на триплет.
|