Функции и функциональные литералы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Функции и функциональные литералы



Функция –это фрагмент исполняемого кода, который определен в JavaScript-программе или заранее предопределен в реализации JavaScript. Хотя функция определяется только один раз, JavaScriptпрограмма может исполнять или вызывать ее сколько угодно. Функции могут передаваться аргументы, или параметры, определяющие значение или значения, для которых она должна выполнять вычисления; также функция может возвращать значение, представляющее собой результат этих вычислений. Реализации JavaScript предоставляют много предопределенных функций, таких как функция Math.sin(), возвращающая синус угла.

JavaScript-программы могут также определять собственные функции, содержащие, например, такой код:

function square(x) //Функция называетсяsquare. Она принимает один аргумент, x.

{ // Здесь начинается тело функции.

return x*x; // Функция возводит свой аргумент в квадрат и возвращает

// полученное значение.

} // Здесь функция заканчивается.

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

y = Math.sin(x);

y = square(x);

d = compute_distance(x1, y1, z1, x2, y2, z2);

move();

Важной чертой JavaScript является то, что функции представляют собой значения, которыми можно манипулировать в JavaScript-коде. Во многих языках, в том числе в Java, функции – это всего лишь синтаксические элементы языка, но не тип данных: их можно определять и вызывать. То обстоятельство, что функции в JavaScript представляют собой настоящие значения, придает языку большую гибкость. Это означает, что функции могут храниться в переменных, массивах и объектах, а также передаваться в качестве аргументов другим функциям.

Поскольку функции представляют собой значения, такие же, как числа и строки, они могут присваиваться свойствам объектов. Когда функция присваивается свойству объекта, она часто называется методом этого объекта. Методы – важная часть объектно-ориентированного программирования.

 

Функции

Функциональные литералы

Функциональный литерал задается с помощью ключевого слова function, за которым следуют необязательное имя функции, список аргументов функции, заключенный в круглые скобки, и тело функции в фигурных скобках. Другими словами, функциональный литерал выглядит так же, как определение функции, правда, у него может не быть имени. Самое большое различие состоит в том, что функциональные литералы могут входить в другие JavaScript-выражения. То есть функцию square()не обязательно задавать в виде определения:

function square(x) { return x*x; }

Ее можно задать с помощью функционального литерала:

var square = function(x) { return x*x; }

Имеется еще один способ определения функции: можно передать список аргументов и тело функции в виде строк в конструктор Function(). Например:

var square = new Function("x", "return x*x;");

Такое определение функций используется редко.

 

Объекты

Объект –это коллекция именованных значений, которые обычно называют свойствами(properties) объекта.

 

Создание объектов

Объекты создаются путем вызова специальных функций-конструкторов. Все следующие строки создают новые объекты:

var o = new Object();

var now = new Date();

var pattern = new RegExp("\\sjava\\s", "i");

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

var point = new Object();

point.x = 2.3;

point.y = -1.2;

 

Объектные литералы

В JavaScript определяется синтаксис объектных литералов, позволяющий создавать объекты и указывать их свойства. Объектный литерал (также называемый инициализатором объекта) представляет собой список разделенных запятыми пар «свойство/значение», заключенный в фигурные скобки. Внутри пар роль разделителя играет двоеточие. Таким образом, объект pointиз предыдущего примера также может быть создан и инициализирован следующей строкой:

var point = { x:2.3, y:1.2 };

Объектные литералы могут быть вложенными. Например:

var rectangle = { upperLeft: { x: 2, y: 2 },

lowerRight: { x: 4, y: 4 }

};

Наконец, значениями свойств в объектных литералах не обязательно должны быть константы – это могут быть произвольные JavaScriptвыражения. Кроме того, в качестве имен свойств в объектных литералах допускается использовать строковые значения:

var square = { "upperLeft": { x:point.x, y:point.y },

'lowerRight': { x:(point.x + side), y:(point.y+side) }};

 

Массивы

Массив (array), как и объект, представляет собой коллекцию значений. Если каждое значение, содержащееся в объекте, имеет имя, то в массиве каждое значение имеет номер, или индекс. В JavaScript можно извлекать значения из массива, указав после имени массива индекс, заключенный в квадратные скобки. Например, если a– это имя массива, а i– неотрицательное целое число, то a[i] является элементом массива. Индексы массива начинаются с нуля, т. е. a[2] ссылается на третий элемент массива a. Массивы могут содержать любой тип данных JavaScript, в том числе ссылки на другие массивы или на объекты или функции. Например:

document.images[1].width

Этот код ссылается на свойство widthобъекта, хранящегося во втором элементе массива, в свою очередь хранящегося в свойстве imagesобъекта document. Следует также отметить, что в JavaScript не поддерживаются многомерные массивы (хотя допускается существование массивов из массивов). И наконец, поскольку JavaScript является не типизированным языком, поэтому элементы массива не обязательно должны иметь одинаковый тип.

 

Создание массивов

Массив может быть создан с помощью функции-конструктора Array(). Созданному массиву допустимо присваивать любое количество индексированных элементов:

 

var a = new Array();

a[0] = 1.2;

a[1] = "JavaScript";

a[2] = true;

a[3] = { x:1, y:3 };

Массивы могут также быть инициализированы путем передачи элементов массива конструктору Array(). Таким образом, предыдущий пример создания и инициализации массива можно записать так:

var a = new Array(1.2, "JavaScript", true, { x:1, y:3 });

Если передать конструктору Array()только одно число, оно определит длину массива. Таким образом, следующее выражение создает новый массив с 10 неопределенными элементами:

var a = new Array(10);

Литералы массивов

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

var a = [1.2, "JavaScript", true, { x:1, y:3 }];

Как и объектные литералы, литералы массивов могут быть вложенными:

var matrix = [[1,2,3], [4,5,6], [7,8,9]];

Как и в объектных литералах, элементы в литерале массива могут быть произвольными выражениями и не обязательно должны быть константами:

var base = 1024;

var table = [base, base+1, base+2, base+3];

Для того чтобы включить в литерал массива неопределенный элемент, достаточно пропустить значение между запятыми. Следующий массив содержит пять элементов, в том числе три неопределенных:

var sparseArray = [1,,,,5];

 

Заданные значения

Значение null

Ключевое слово nullв JavaScript имеет специальный смысл. Обычно считается, что у значения nullобъектный тип и оно говорит об отсутствии объекта. Значение nullуникально и отличается от любых других. Если переменная равна null, следовательно, в ней не содержится допустимого объекта, массива, числа, строки или логического значения.

Значение undefined

Специальное значение, иногда используемое в JavaScript, – undefined. Оно возвращается при обращении либо к переменной, которая была объявлена, но которой никогда не присваивалось значение, либо к свойству объекта, которое не существует. Заметьте, что специальное значение undefined– это не то же самое, что null. Хотя значения nullи undefinedне эквивалентны друг другу, оператор эквивалентности ==считает их равными. Рассмотрим следующее выражение:

my.prop == null

Однако когда действительно требуется отличить значение nullот значения undefined, нужен оператор идентичности === или оператор typeof

 

Объект Date

Значения даты и времени не относятся к этим фундаментальным типам, однако в JavaScriptимеется класс объектов, представляющих дату и время, и этот класс можно использовать для работы с этим типом данных. Объект Dateв JavaScript создается с помощью оператора new и конструктора Date():

var now = new Date(); // Создание объекта,в котором хранятся текущие дата и время.

// Создание объекта, в котором хранится дата Рождества.

// Обратите внимание: номера месяцев начинаются с нуля, поэтому декабрь имеет номер 11!

var xmas = new Date(2000, 11, 25);

 

Регулярные выражения

Регулярные выражения предоставляют богатый и мощный синтаксис описания текстовых шаблонов. Они применяются для поиска соответствия заданному шаблону и реализации операций поиска и замены. В JavaScript для формирования регулярных выражений принят синтаксис языка Perl.

Регулярные выражения представляются в JavaScript объектом RegExpи могут создаваться с помощью конструктора RegExp(). Как и объект Date, объект RegExp не является одним из фундаментальных типов данных JavaScript; это лишь стандартизованный тип объектов, предоставляемый всеми соответствующими реализациями JavaScript. Однако в отличие от объекта Date, объекты RegExpимеют синтаксис литералов и могут задаваться непосредственно в коде JavaScript-программы. Текст между парой символов слэша образует литерал регулярного выражения. За вторым символом слэша в паре могут также следовать одна или несколько букв, изменяющих смысл шаблона.

 

 

Например:

/^HTML/

/[1-9][0-9]*/

/\bjavascript\b/i

 



Поделиться:


Последнее изменение этой страницы: 2016-12-28; просмотров: 1474; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.81.94 (0.014 с.)