Конспект часть 2

Операторы цикла

Цикл – это набор команд, которые повторяются, пока указанное условие не выполнено. 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. 1. Выражение initial-expression служит для инициализации переменной счетчика, которую можно создать с помощью опреатора var.
  2. 2. Выражение condition вычисляется на каждой итерации цикла. Если значение выражения condition равно истенно, выполняются утверждения в теле цикла. Если значение выражения condition равно ложь, то цикл for прекращается. Если выражения condition пропущено, оно считается равным истинна, тогда цикл продолжается до ошибки или до оператора break.
  3. 3. Выражение increment-expression вообще используется для изменения значения переменной счетчика.
  4. 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( )

Преобразует символы исходной строки в верхний регистр