Операторы цикла
Цикл – это набор команд, которые повторяются, пока указанное условие не выполнено. JavaScript поддерживает две формы цикла: for и while. Кроме того, операторы break и continue, используются вмести с циклами.
Другой оператор, for…in, выполняет утверждения несколько раз, но используется для манипулирования объекта.
Оператор for
Цикл for повторяет утверждения, до тех пор пока указанное условие ложно. Цикл for JavaScript for подобен циклу for Java и традиционному циклу for языка C. Оператор for выглядит следующим образом:
for ([initial-expression;]
[condition;]
[increment-expression])
{
statements
}
Последовательность выполнения цикла for следующия:
- 1. Выражение initial-expression служит для инициализации переменной счетчика, которую можно создать с помощью опреатора var.
- 2. Выражение condition вычисляется на каждой итерации цикла. Если значение выражения condition равно истенно, выполняются утверждения в теле цикла. Если значение выражения condition равно ложь, то цикл for прекращается. Если выражения condition пропущено, оно считается равным истинна, тогда цикл продолжается до ошибки или до оператора break.
- 3. Выражение increment-expression вообще используется для изменения значения переменной счетчика.
- 4. statements вычисляют и контралируют возвращение шага 2.
Пример. Следующая функция содержит оператор for, который считает число выбранных элементов в списке (объект select позволяет выбрать несколько элементов). Оператор for объявляю переменный i и присваевает ей ноль. Если i меньше чем число элементов в объекте select, то выполняется оператор if, и i увеличевается на 1 после каждой итерации.
Оператор while
Оператор while повторяет цикл, пока указанное условие равно истинна. Оператор while выглядит следующим образом:
while (condition)
{statements}
Если условие становится ложным, то утверждения внутри цикла прекращают выполняться.
Условия проверяется только тогда, когда утверждения в цикле были выполнены, и цикл должен повториться.
Пример 1. Следующий опрератор while повторяется, до тех пор пока n – меньше чем три.
n = 0
x = 0
while( n < 3 )
{ n ++ x += n}
Каждая итерация цикла увеличивает n и прибавляет его к x. Следовательно, x и n принемают следующие значения:
- После первой итерации: n = 1 и x = 1
- После второй итерации: n = 2 и x = 3
- После третьей итерации: n = 3 и x = 6
После завершения третьей итерации, условие n<3 больше не истинно, поэтому цикл прекращается.
Пример 2: бесконечный цикл. Проверьте, что условие в цикле в конечном счете становится ложным; иначе, цикл никогда не прекратиться. Утверждения в следующем цикле while выполняются бесконечно, потому что условие никогда не становится ложным:
while (true) {
alert("Hello, world") }
Оператор break
Оператор break завершает текущий цикл while или for и передает управление программы первому опретору после цикла. Оператор break выглядит следующим образом:
break
Пример. Следующая функция имеет оператор break, который завершает цикл while, когда i равно 3, и затем возвращает значение 3 * x.
function testBreak(x) {
var i = 0
while (i < 6) {
if (i == 3)
break
i++ }
return i*x}
Оператор continue
Оператор continue передает управление оператору проверки истинности условия в цикле while и оператору обновления значения счетчика в цикле for, и продолжает выполнение цикла. Оператор continue выглядит следующим образом:
continue
Пример. Следующий пример показывает цикл while, который имеет оператор continue, который выполняется, когда значение i равно 3. Таким образом, n принемает значения 1, 3, 7, и 12.
i = 0
n = 0
while (i < 5) {
i++
if (i == 3)
continue
n += i
}
Оператор манипулирования объекта
JavaScript имеет оператор управления объектами for…in.
Оператор for…in присваивает переменной поочередно все свойства объекта. Для каждого свойства JavaScript выполняет указанные утверждения. Оператор for…in выглядит следующим образом:
for (variable in object)
{ statements
}
Объект Array
Встроенный объект Array представляет собой массив. Создать экземпляр массива можно следующими способами,
var a = new Array(); // Размер массива не указан
var b = new Array(3); // Размер массива равен трем
var с = new Array("the", "gold", "fever"); // Массив задан перечислением
Свойство объекта Array length возвращает число элементов в массиве. В таблице 1 приведены методы объекта Array.
Таблица 1. Методы объекта Array
Метод | Описание |
сoncat() | Соединяет элементы массивов. Синтаксис: array1.concat(array2)
|
| Например: var a, b, c; a = new Array(0, 1 ,2); b = new Array(5, 6, 7); с = a.concat(b); // Результирующий массив с = {0,1,2,5,6,7} |
join() | Соединяет все элементы массива в строку. Параметр separator задает разделитель между элементами. Если он опущен, то разделитель не используется. Синтаксис: array1.join(separator) Например: var a, b; a = new Array("Стандартизация", " и", " информационное", "обеспечение "); b = a.join(" "); // Результирующая строка "Стандартизация и информационное обеспечение" |
reverse( ) | Изменяет порядок следования элементов в массиве. Синтаксис: arrayobj . reverse( ) Например: var a, b; а = new Array(0,1,2,3); b = а.reverse( ); // Результирующий массив b = {3,2,1,0} |
slice() | Возвращает часть массива, начиная с позиции start и заканчивая позицией end. Если значение параметра end опущено, то возвращает часть массива, начиная с позиции start и до его конца. Синтаксис: array1. slice(start, [end]) Например, var a, b; a = new Array(0,1,2,3); b = a. slice(2).join(";"); // Результирующее значение "2;3" |
sort() | Сортирует элементы массива. Синтаксис: array1. sort(sort function) Например, var a, b; a = new Array("a","f","d","b","c","m","r"); b = a.sort().join(); // Результирующее значение "abcdfmr" |
toString() | Преобразует массив в строку. objectname.toString( ) |
valueOf( ) | Преобразует массив в строку с запятыми в качестве разделителей. array1.valueOf() |
JavaScript позволяет работать не только с одномерными, но и многомерными массивами. Многомерный массив можно задать перечислением, как показано в следующем коде.
var а = new Array(new Array(1,2, 3) , new Array(4, 5, 6) , new Array(7, 8,9));
var s = 0;
for(var i=0; i<3; i++)
{
for(var j=0; j<3;j++)
s += a[i][j];
}
Объект Boolean
Объект Boolean создается по следующей схеме;
var variablename = new Boolean(boolvalue)
где параметр boolvalue определяет начальную установку объекта. Если параметр принимает значение false, о, null, пустую строку или вообще опущен, то принимается значение false. В противном случае — true. Основным методом является toString(), который возвращает его строковое представление.
Объект Number
Объект Number создается по следующей схеме.
var variablename = new Nimiber( value)
Хотя объект Number может использоваться для хранения числовых значений, наиболее часто он применяется для доступа, к константам, которые характеризуют максимальное или минимальное доступное число и т. д. Эти константы возвращаются в виде значений его свойств, перечисленных в табл.2.
Таблица 2. Свойства объекта Number
Свойство | Описание |
MAXVALUE MINVALUE NEGATIVE_INFINITY
POSITIVE_INFINITY
NaN | Максимальное число(1.79Е+308) Минимально число(2,22Е-308) Значение отрицательной бесконечности, возвращаемое в случае переполнения Значение положительной бесконечности, возвращаемое в случае переполнения Специальное нечисловое значение |
Объект Math
В JavaScript большинство математических констант и функций инкапсулированы в единый статический объект Math. Математические функции являются методами этого объекта и перечислены в табл. 3, а константы — свойствами, которые собраны в табл. 4.
Таблица 3. Методы объекта Math.
Методы | Описание |
abs() | Возвращает абсолютное значение |
acos() | Возвращает арккосинус аргумента, значение которого выражено в радианах |
asin() | Возвращает арксинус аргумента, значение которого выражено в радианах |
atan() | Возвращает арктангенс аргумента, значение которого выражено в радианах |
atan2() | Возвращает угол в радианах от х-оси до точки(у, х) atan2(у, х) |
| |
ceil() | Возвращает наименьшее целое число, большее или равное данному |
cos() | Возвращает косинус аргумента |
eхр( ) | Возвращает экспоненту аргумента |
floor() | Возвращает наибольшее целое число, меньшее или равное данному |
log() | Возвращает натуральный логарифм числа |
max( ) | Возвращает максимальное из двух чисел |
min( ) | Возвращает минимальное из двух чисел |
pow( ) | Возвращает результат возведения числа base в степень exponent. pow(base, exponent) |
| |
random( ) | Возвращает псевдослучайное число из диапазона от 0 до 1 |
round( ) | Возвращает значение, округленное до ближайшего целого |
sin() | Возвращает синус аргумента |
sqrtO | Возвращает корень квадратный аргумента |
tan() | Возвращает тангенс аргумента |
Таблица 4. Свойства объекта Math.
Свойство | Описание |
Е LN2 LN10 LOG2E LOG10E | Основание натурального логарифма Натуральный логарифм 2 Натуральный логарифм 10 Логарифм по основанию 2 от е Десятичный логарифм от е |
PI | Число π |
SQRT1_2 | Квадратный корень 0,5 |
SQRT2 | Квадратный корень 2 |
Объект String
Строка является одним из ключевых элементов любого языка программирования. JavaScript позволяет формировать экземпляры объектов string. Объект типа string создается по следующей схеме.
var variablename = new String(value),
Основным свойством объекта string является свойство length, возвращающее длину строки. В табл. 5 перечислены методы объекта string.
Таблица 5. Методы объекта string
Методы | Описание |
anchor( ) | Создает экземпляр тега <А> со значением атрибута name, равным строке, передаваемой методу. Например: var str = "This is an anchor"; str = str. anchor("test"); // Возвращает // <A NAME="test"> This is an anchor</A> |
big() | Размещает парные теги <big> вокруг текста из строкового объекта. Например: var str = "This is a big tag".big(); // Возвращает // <BIG> This is a big tag</BIG> |
blink() | Размещает парные теги <blink> вокруг текста из строкового объекта. Например: var str ="This is a blinking line"; str = str.blink(); // Возвращает // <BLINK> This is a blinking line</BLINK> |
bold() | Размещает парные <в> теги вокруг текста из строкового объекта. Например, var str = "This is a bold text"; str = str.bold(); // Возвращает // <B> This is a bold text</B> |
charAt( ) | Возвращает символ строки, расположенный по указанному индексу. Нумерация индексов начинается с нуля. Например: function TestcharAt(n, str) { var s = str.charAt(n-1); return( s ); } var r = TestcharAt(3, "abcdefghijklm" ); // Возвращает "с" |
charCodeAt() | Возвращает код символа строки, расположенный по указанному индексу. Если нет значений, соответствующих указанному индексу, то возвращается значение NaN. Например: function TestcharCodeAt(n, str) { var s = str. char Code At(n-1); return(s); } var r = TestcharCodeAt(3, "abcdefghijklm" ); // Возвращает 99 |
concat( ) | Объединяет две строки в одну. Например: var strl="ABC"; var str2 = "XYZ"; var s = str1.concat(str2); // Возвращает "ABCXYZ" |
fixed() | Размещает парные теги <тт> вокруг текста из строкового объекта, устанавливающие шрифт фиксированной ширины. Например, var str = "This is a just a text". big(); // Возвращает // <ТТ> This is a just a text<ТТ> |
fontcolor() | Размещает парные теги <font> вокруг текста из строкового объекта со значением атрибута color, равным значению параметра этого метода. Например: var str = "This is a red text"; str = str.fontcolor("red"); // Возвращает 1 // <FONT color=red> This is a red text</FONT> |
fontsize() | Размещает парные <font> теги вокруг текста из строкового объекта со значением атрибута size, равным значению параметра этого метода. Например: var str = "This is a sized text"; str = str.fontsize(2); // Возвращает // <FONT size=2> This is a bold text</FONT> |
fromCharCode() | Создает строку на основе передаваемых кодов символов. Например: var test = String.fromCharCode(65, 108, 105, 99, 101); // Возвращает "Alice" |
indexOf() | Возвращает позицию первого вхождения строки substring в экземпляр объекта string, начиная с позиции startindex. Если параметр startindex отсутствует, то поиск производится с начала строки. indexOf(substring [, startindex]) Например: function Test(str) { var pattern = "BABEBIBOBUBABEBIBOBU"; var s=pattern.indexOf(str); return(s); } var n = Test("BIBO"); // Возвращает 4 Следующий код демонстрирует, как метод indexOf() позволяет определить число вхождений буквы(в данном случае "о") в предложение. var pos = 0, num = -1, i = -1; var sentence = "An ounce of discretion"+ "is worth a pound of wit"; while(pos != -1) { pos = sentence.indexOf("o", i + 1); num++; i = pos; } // Возвращает значение num, равное 6 |
italics( ) | Размещает парные теги <I> вокруг текста из строкового объекта. Например: var str = "This is an italic text"; str = str. italics(); // Возвращает // <I> This is an italic text </I> |
lastIndexOf() | Возвращает позицию первого вхождения строки substring в экземпляр объекта string, начиная с позиции startindex, причем поиск осуществляется справа налево. Если параметр startindex отсутствует, то поиск производится с начала строки. lastlndexOf(substring [, startindex]) |
link() | Создает экземпляр тега <А> со значением атрибута href, равным строке, передаваемой методу. Например, var str = "This is a hyperlink"; str=str.link("http://www.smis-bntu.com"); // Возвращает // <A href=" http://www.smis-bntu.com "> This is a hyperlink</A> |
match( ) | Возвращает массив, основанный на выражении, переданном в качестве значения параметра метода |
replace() | Выполняет операцию поиска регулярного выражения rgЕхр и замену его на подстроку replaceText. replace( rgExp, replaceText}
|
search() | Возвращает позицию совпадения с заданной строкой в экземпляре объекта String. Если строка не найдена, то возвращается значение -1. |
slice() | Возвращает часть строки между позициями, заданными пара метрами start и end. Если параметр end опущен, то строка рассматривается от позиции start и до конца. slice(start [ , end] ) Например, var sentence="On all fours"; sentence =sentence. slice(6, sentence.length); // Возвращает "fours" |
small() | Размещает парные теги <small> вокруг текста из строкового объекта. Например, var str = "This is a SMALL tag".small( ); // Возвращает // <SMALL> This is a SMALL tag</SMALL> |
split() | Разбивает строку в массив сегментов. В качестве разделителя между сегментами используется значение параметра метода. Например, следующий код разбивает предложение на слова и каждое их них выводит в отдельную строку документа. var sentence = "A streak of good luck"; var t = new Array( ); t=sentence.split(" "); for (var i=0;i<t.length; i++) { document.writeln(t[i]); document.writeln("<br>"); } document.close(); |
strike() | Размещает парные теги <strike> вокруг текста из строкового объекта |
sub() | Размещает парные теги <sub> вокруг текста из строкового объекта |
substrO | Возвращает подстроку длиной length, начиная с позиции start. substr(start [, length]) |
substring() | Возвращает подстроку, ограниченную позициями start и end. substring(start, end) |
sup() | Размещает парные теги <sup> вокруг текста из строкового объекта |
toLowerCase( ) | Преобразует символы исходной строки в нижний регистр |
toUpperCase( ) | Преобразует символы исходной строки в верхний регистр |