Управляющие конструкции языка javascript

JavaScript — урок 2. Основные конструкции

Также имеется ряд методов обертывающие текущую строку одним из html тегов:

  • anchor(str) — делает текст закладкой с именем str (тег a);
  • link(str) — делает ссылку по адресу str (тег a с атрибутом href=str);
  • big() — текст с увеличенным шрифтом (тег big);
  • blink() — мерцающий текст (тег blink);
  • bold() — жирный текст (тег bold);
  • fix() — фиксированный текст (тег fix);
  • fontcolor(color) — устанавливает цвет шрифта, color имя html цвета или число (тег font с атрибутом COLOR);
  • fontsize(integer) — устанавливает размер шрифта (тег font с атрибутом size);
  • italics() — наклонный текст (тег i);
  • small() — текст с уменьшенным шрифтом (тег small);
  • strike() — зачеркнутый текст (тег strike);
  • sub() — текст как нижний индекс (тег sub);
  • sup() — текст как верхний индекс (тег sup).
// вывод жирной зачеркнутой строки document.write("Hello, world".strike().bold();

методы для регулярных выражений

Список методов, работающих с регулярными выражениями:

  • match(regexp) — поиск в строке элементов удовлетворяющих указанному шаблону
    (похож на метод exec объекта RegExp);
  • search(regexp) — определяет есть ли в строке хотя бы один элемент
    удовлетворяющий указанному шаблону;
  • replace(regexp, rstr) — заменяет первый элемент указанной строкой.
    Если шаблон глобальный (с флагом g), то заменяются все элементы.
Читайте также:  Read more with php

Массивы

Массивы в JavaScript реализованы через объект типа Array. Для массивов
определена операция индексации []. При этом выход за границы массива невозможен
в принципе, так как при необходимости автоматически добавляется нужное число
элементов. По свойству length можно определить текущее число элементов.
Определены следующие методы:

  • concat(item1 [,itme2[,itemn]]) — добавляет элемент в конец массива;
  • join(separator) — возвращает строку состояющую из элементов разделенных указанным разделителем;
  • push(item1 [,itme2[,itemn]]) — добавляет элемент в конец массива и возвращает новый размер массива;
  • pop() — удаляет последний элемент массива;
  • reverse() — переворачивает массив;
  • shift() — удаляет первый элемент массива;
  • unshift([item1[, item2 [,… [, itemN]]]]) — вставляет элементы в начало массива;
  • slice(start [,end]) — выделяет подмассив с указанной стартовой позиции
    до указанной конечной позиции или до конца массива;
  • sort([sortFunction]) — сортирует массив указанной функцией сортировки;
  • splice(start, count [,item1[, item2[,… [,itemn]]]]) — удаляет count элементов
    с указанной позиции, и на их место вставляет указанные элементы.
var array = new Array ("red","green","blue"); // создаем массив из трех элементов array[4]="alfa"; // добавляем 4 элемент array.sort(); // сортируем document.write(array.join(", ").bold);

alfa, blue, green, red, alfa, blue, green, red,

Также существует упрощенный синтаксис создания массива.

var empty=[]; // пустой массив var color = ["blue","red"]; document.write(color.join(", ").italics());

Ассоциативные массивы

Ассоциативные массивы позволяют индексировать элемент по строковому значению.
В JavaScript они также являются внутренней реализацией объектов. Другими
словами любой объект является массивом свойств и наоборот.

Элементы задаются в фигурных скобках через запятую. Каждый элемент задается парой значений:
именем ключа и непосредственно значением элемента, который может быть любого типа
(даже объектом). Для переносимости кода имя ключа лучше указывать в кавычках.

var items=, "rgb":["red","green","blue"] >; document.write(items["rgb"][1]);

Не путайте ассоциативные массивы с объектом Array.
Последний лишь один из множества различных объектов и его методы
как join или sort работать не будут, пока вы явно не определите их для нового объекта.

var objcolor=; try< // ничего не будет document.write(objcolor.join(", ").italics()); >catch(e)< document.write("ошибка: "+ e.description+"
"); > objcolor["join"]=function(delim)< var ret=""; for (var i in this) ret += this[i] + delim; return ret; >; document.write("результат добавленного join: " +objcolor.join(", ").italics());

Выражения и операции

Выражения представляют собой множество данных связанных между собой операциями — особыми операторами
языка, возвращающих некоторое значение. Аргументы операций называют операндами. Большинство операций либо
унарные (с одним операндом) или бинарные (с двумя операндами). Также операции характеризуются приоритетом
(старшинством) выполнения в выражении. Например, результат выражения 4+5*2
будет 14, а не 18, так как операция умножения имеет больший приоритет, чем сложение. Операции одинакового
приоритета выполняются последовательно слева направо.

арифметические операции:

  • — унарный минус, изменяет знак числа;
  • ++ — инкремент, увеличивает число на 1;
  • — декремент, уменьшает число на 1;
  • * — произведение;
  • / — деление;
  • % — остаток от деления;
  • + — сложение;
  • — вычитание.

Существуют два варианта операции инкремента и декремента.
Префиксный вариант (операнд справа) изменяет операнд сразу,
постфиксный вариант (операнд слева) изменяет операнд после вычисления всего выражения, в которое
входит операнд.

логические операции:

операции отношения

  • — меньше;
  • > — больше;
  • — меньше либо равно;
  • >= — больше либо равно;
  • == — равенство;
  • === — строгое равенство (‘1’===1 вернет false, а ‘1’==1 вернет true);
  • !== — строгое не равенство (т.е. операнды должны быть одного типа);
  • != — не равенство.

побитовые операции

  • ~ — инверсия (отрицание);
  • & — и;
  • | — или;
  • ^ — исключающее или;
  • — сдвиг влево;
  • >> — сдвиг вправо;
  • >>> — беззнаковый сдвиг вправо.

операции назначения:

  • = — присваивает левому операнду значение правого операнда;
  • op= — выполняет операцию op над операндами и сохраняет результат в левом операнде.

операции доступа:

  • [] — операци индексации, доступ к элементу массива;
  • . — доступ к члену объекта (свойству/методу).

Объект можно рассматривать как ассоциативный массив состоящий из имен свойств и их значений. Например,
myobj.myproperty
эквивалентно myobj[«myproperty»] .

прочие операции:

  • () — операция вызова функции или группировки выражения;
  • (cond)?ret1:ret2 — условная операция, возвращающая ret1 если cond истина, и ret2 в противном случае;
  • , — запятая, позволяет вычислить последовательно несколько выражений (например, удобно использовать в цикле for);
  • delete expr — удаляет свойство объекта или элемент массива;
  • typeof expr — возвращает название типа выражения ( «number», «string», «boolean», «object», «function» или «undefined»);
  • void expr — сбрасывает результат выражения expr;
  • obj instanceof cls — определяет является ли объект obj объектом типа cls;
  • new cls() — создает экземпляр объекта типа cls;
  • prop in obj — определяет, входит ли свойство prop в объект obj.

приоритет

Ниже приведен список операций расположенных по убыванию их приоритета:

. [] ()
++ — — ~ ! delete new typeof void
* / %
+ — +
> >>>
< >= instanceof
== != === !==
&
^
|
&&
||
?:
= OP=
,

Управляющие операторы

Управляющие операторы служат для управления ходом выполнения программы.

условный оператор

Условный оператор позволяет выполнить оператор или блок операторов если указанное
выражение истинно, а если присутствует оператор else выполнить альтернативый оператор или блок операторов.

/* общая форма оператора if if(cond) operator1 else operator2 */ if(x==5) < y=3.14; z=2*3.14; >if(x!=20) y=3.14; else

оператор выбора

Оператор выбора позволяет выполнить ряд операторов по значению указанного выражения. Выполнение начинается с метки case чье ‘имя’ равно значению выражения, продолжает либо до конца блока оператора выбора либо до оператора break. Также можно определить метку по умолчанию, которая будет использоваться когда значение выраженияне соответствует ни одной из определенных меток. Данный оператор позволяет заменить длинные цепочки if…else на более читаемый вариант.
В отличие от других языков тип выражения может быть любым, а не только целочисленным.

/* общая форма оператора выбора switch(expr) < case val1: . break; . case valn: . break; default: . // метка по умолчанию >*/ var x=»number»; // попробуйте разные значения switch(x)

цикл с предусловием

Оператор цикла с предусловием выполняет оператор до тех пор, пока истинно условие.

/* общая форма оператора цикла с предусловием while(expr) operator */ while(x

цикл с постусловием

Оператор цикла с постусловием выполняет оператор до тех пор, пока истинно условия.
Так как условие проверяется после выполнения оператора, то цикл имеет как минимум одну итерацию.

/* общая форма оператора цикла с постусловием dowhile(expr); */ do < x+=3; . >while(x<110);

цикл по счетчику

Оператор цикла по счетчику позволяет выполнить оператор пока счетчик не достигнет определенного значения. В общем этот вид цикла легко заменить циклом с предусловием, однако он более удобен.

/* общая форма оператора цикла по счетчику for( vardecl; expr; expr2) operator где vardecl объявления внутренних переменных счетчиков expr условие при котором будет выполняться следующая итерация expr2 выражение, которое будет вычисляться в конце каждой итерации */ for(var i=0;i<110;i++) x=func(i); //-- var x=1; for(i=0,j=10;i<50 && j<50;i++,j+=5) x+=i+j; document.write(x);

цикл по элементам

Оператор по элементного цикла, позволяет выполнить указанный оператор для каждого пользовательского свойства объекта или для каждого элемента массива.

/* общая форма по элементного цикла for (variable in [object | array]) operator */ var obj = new Object(); // новый объект var cnt=0; // добавляем три свойства к объекту obj.prop1=1; obj.prop2="dfsdf" obj.prop3=3.14; for(i in obj) // подсчитываем число пользовательских свойств cnt++; document.write(cnt); //-- var array = new Array(1,2,3,4,5,6,7,8,9), cnt=0; for(i in array) cnt+=array[i]; document.write(cnt);

операторы продолжения и выхода

Работая с циклами иногда необходимо перейти на следующую итерацию до выполнения всего тела цикла или наоборот прервать выполнения цикла. В этом помогут операторы continue и break. Оператор выхода из блока также используется в теле оператора выбора.

выбор объекта по умолчанию

Оператор with определяет новый объект по умолчанию.

/* общая форма оператора with with (obj) оператор */ with (Math) < a= pow(sin(3/4*PI)); . >// вместо // a=Math.pow(Math.sin(3/4*Math.PI));

Функции

Наиболее часто используемый код обычно оформляют в функции и вызывают их по необходимости. Для создания новой функции используется ключевое слово function. Код функции выполняется до конца тела функции или до первого оператора return (выхода из функции). В нем же указывается и выражение, определяющее возвращающее значение.

/*общая форма функций function name ([arg1 [,arg2[. argn]]]) < . // код тела функции >где name - имя функции arg - имя аргумента */ function add5(x)

После определения функции ее можно вызывать с помощью операции вызова функции (), например
document.write(add5(20));
выведет число: 2525

Внутри любой функции доступен массив arguments, содержащий значения аргументов. Таким образом, можно создавать функции с переменным числом аргументов. Например, попробуйте следующий код

function sum() < var l=arguments.length,r=0; for(i=0;idocument.write("sum="+sum(2,3,20));

Рекурсия функций поддерживается аналогично другим языкам без всяких особенностей. Так что в качестве упражения можете написать функцию вычисления факториала (типичный пример рекурсии).

В пункте об ООП вы также узнаете, что функция в JavaScript как и массивы является объектом. Вы можете даже возвращать функцию как результат другой функции.

Источник

Оцените статью