Опубликован: 19.10.2006 | Уровень: для всех | Доступ: платный
Лекция 5:

Строки, числа и массивы

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >

Числа

Работа с числами в JavaScript происходит достаточно просто. В лекциях " 1" и " 2" было показано, как выполняются базовые арифметические операции, операторы ++, --, а также *=, +=, /= и -=. Мы узнали, что NaN означает "Не число" и что делает функция isNaN(). Осталось рассмотреть еще только несколько вещей.

Объект Math в JavaScript содержит функции, позволяющие сделать почти все, что можно сделать с числами помимо обычной арифметики. Math.PI, например, содержит просто число 3.141592653589793. В нем содержатся тригонометрические функции ( sin, cos, tan, и т.д.), функции для округления чисел ( Math.floor возвращает число, округленное с недостатком, Math.ceil возвращает число, округленное с избытком, а Math.round округляет число "нормально") и многие другие. Существует очень много функций, объяснять которые здесь не имеет смысла. Их всегда можно найти в подходящем справочнике.

Двумя наиболее распространенными задачами, связанными с числами, являются преобразование числа в строку и строки в число. Как уже говорилось, JavaScript является слабо типизированным языком, а это означает, что типы данных не имеют большого значения, но существуют некоторые случаи, когда надо быть уверенным, что имеется число или строка. Если надо сложить, например, 5 и число, которое вводит пользователь, то надо быть уверенным, что введено число, а не слово " Привет ".

var n = parseInt("3.14"); // 3
var n = parseFloat("3.14") // 3.14

Функция parseInt возвращает целое значение своего аргумента. Аргументы " 3.14 ", " 3 ", " 3.00001 " и " 3.9999 " превратятся в значение 3. Функция parseFloat, с другой стороны, возвращает также любое десятичное значение. Обе эти функции пытаются "очистить" данные перед возвращением числа. Например, parseInt ("3a") вернет значение 3.

Существует также несколько методов, которые можно использовать, когда надо преобразовать число в строку:

var n = 5;

var m = n.toString();
var m = n+'';
var m = new String(n);

Как говорилось ранее, последний метод может быть немного непривычным, поэтому предполагается, что пользователь будет держаться от него в стороне, если только не понадобится использовать объект String для специальных целей. Предпочтительным методом является n.toString(), но необходимо отметить, что часто используется второй метод. Например, если имеется уведомление alert('Имеется ' + apples + ' яблок'), то число apples автоматически преобразуется в строку.

Если необходимо выполнить строковую операцию с переменной, то необходимо быть уверенным, что имеется строка. Если, например, имеется запись года из 4 цифр и ее надо преобразовать в 2 цифры:

var year = 2000;

var sYear = year.toString();
var year2 = sYear.substr(sYear.length-2);

Можно было бы также легко вычесть 2000 из этой даты, но что, если датой является 1995? или 1800? или 2700 или просто 5? В результате могли бы получиться совершенно неправильные даты, если вычесть 2000 из каждой такой даты. Используемый метод всегда даст правильные две цифры года.

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
Елена Сапегова
Елена Сапегова

После прохождения теоретической части пришло письмо об окончании теоретической части курса, будет ли практическая часть?

Рустам Рахимов
Рустам Рахимов

Пол часа искал в интеренете, как что работает. Такое чувство что автор пишет для людей которые уже знают js, или просто хвастается своими знаниями. Конструкция формы непонятна. И можно было бы в кратце написать, что такое событие которое используют. Сорершенно не понятно как работает форма, и как брать из нее значение. 

function Complete() {

    var x = "Имя: " + document.tutform.firstname.value;

alert(x);

} - Так брать значение из формы tutform, firstname-получаем значение из имени. 

<INPUT TYPE="button" VALUE="Готово" onClick="Complete();"> - Нужно к кнопке прописать событие, при нажатие на кнопку готово, чтобы возвращалось значение с помощью функции. А так ничего не работает, и смысла учить нету, если не знать почему не работает.

 

Зарина Каримова
Зарина Каримова
Казахстан, Алматы, Гимназия им. Ахмета Байтурсынова №139, 2008
Akiyev Begench
Akiyev Begench
Беларусь, Полоцк, полоцкий государственный университет