Объект Global
Объектный тип Global содержит так называемые высокоуровневые свойства и методы. Это единственный встроенный тип JavaScript, не имеющий конструктора, поэтому нельзя создавать экземпляры объектов типа Global. Свойства и методы Global доступны сразу же после начала работы интерпретатора (при обращении к ним не надо указывать имя объекта Global, а только имя свойства или функции).
Для объектного типа Global определены следующие свойства: infinity – числовое значение, представляющее бесконечность и NaN – значение, представляющее не число.
Для объекта Global определены следующие группы функций:
· функции для работы с числами;
· функции кодировки;
· функция eval().
Для работы с числами в объекте Global определены функции parseInt(), parseFloat(), isNaN()и isFinite().
Функция
parseInt(строка, основание)
анализирует строку и возвращает целое число. Если начало строки – число, возвращается это число (символы после последней цифры игнорируются). Если строка начинается не со знака "+" или "-" и не с цифры – возвращается NaN. Второй параметр основание задает число – основание системы счисления, в которой представлено число в первом параметре (равно 2 для двоичной системы счисления, 8 – для восьмеричной, 10 – для десятичной и 16 – для шестнадцатеричной системы счисления). Если параметр не задан или его значение равно 0, функция преобразует строку в число по следующему алгоритму:
· если параметр строка начинается с символов "0x", предполагается, что строка – шестнадцатеричное число;
· если параметр строка начинается с символов "0", предполагается, что строка – восьмеричное число;
· если параметр строка начинается со знака "+" или "-" или с цифры, предполагается, что строка – десятичное число.
Функция
parseFloat(строка)
анализирует строку и возвращает число с плавающей точкой. Если начало строки – число, возвращается это число (символы после последней цифры игнорируются). Если строка начинается не со знака "+" или "-" и не с цифры – возвращается NaN.
Функция
isNaN(число)
возвращает true, если аргумент является не-числом (NaN) и false – в противном случае.
Функция
isFinite(число)
возвращает true, если аргумент является конечным числом и false – в противном случае (если число – положительная или отрицательная бесконечность).
Пример 4.4.44. Использование функций объекта Global для работы с числами:
1. // Функция ввода и проверки операнда – целого числа
function intOperand(name)
{
while(true)
{
// Получение строкового значения операнда
inputString = prompt("Введите " + name +
" (целое число):","");
// Перевод строкового значения в число
number = parseInt(inputString);
// Если строковое значение - число
if(!isNaN(number))
// Выход из цикла
break;
// Вывод сообщения об ошибке
alert("Неверное число: " + inputString);
}
// Возврат числа
return number;
}
…
// Определение первого операнда
number1 = intOperand("первое слагаемое (целое число)");
// Определение второго операнда
number2 = intOperand("второе слагаемое (целое число)");
sum = number1 + number2; // Суммирование операндов
alert("sum=" + sum); // Вывод суммы
В этом фрагменте сценария с помощью функции prompt() вводятся два операнда. Поскольку возвращаемое функцией значение является строкой, оно преобразуется в целое число с помощью функции parseInt(). С помощью функции isNaN() проверяется, является ли результат преобразования числом. Если результат – число, выполняется выход из бесконечного цикла и возврат из функции, иначе выводится сообщение об ошибке и цикл ввода и проверки числа повторяется.
Вывод этого фрагмента на экран имеет следующий вид:
2. Изменим первую и вторую строку функции в предыдущем пункте на
// Функция ввода и проверки операнда – числа
// с плавающей точкой
function floatOperand(name),
а строку
number = parseInt(inputString);
на строку
number = parseFloat(inputString);.
Фрагмент сценария с вызовом функции floatOperand(), выполнением деления и проверкой, является ли результат деления целым числом:
// Определение первого операнда
number1 = floatOperand("делимое (вещественное число)");
// Определение второго операнда
number2 = floatOperand("делитель (вещественное число)");
quotient = number1 / number2; // Деление операндов
// Если результат деления – конечное число
if(isFinite(quotient))
alert("quotient=" + quotient); // Вывод суммы
else
alert("Деление на ноль"); // Вывод сообщения
В случае ошибки вывод на экран имеет следующий вид: