Присваивание функций. Функциональный тип данных
JavaScript позволяет выполнять над функциями один фокус — присваивать функции переменным.
Пример:
var someFunc;
someFunc = cmp;
Здесь мы присвоили переменной someFunc объявленную ранее функцию cmp. Заметим, что в этом случае справа от оператора присваивания указывают только имя функции без скобок и параметров.
Впоследствии мы можем вызывать данную функцию, обратившись к переменной, которой она была присвоена:
c = someFunc(1, 2, 3);
Здесь мы вызвали функцию cmp через переменную someFunc.
Переменная, которой была присвоена функция, хранит данные, относящиеся к 
А можно сделать и так:
var someFunc = function(c, d, e) {
var f;
f = divide(c, d) + e;
return f;
}
Здесь мы объявили функцию и сразу же присвоили ее переменной. Как видим, имени объявляемой функции мы не указали — в данном случае оно не нужно.
А еще JavaScript позволяет нам указать функцию в качестве параметра другой функции. Для примера давайте рассмотрим фрагмент JavaScript-кода нашего второго Web-сценария:
ceLinks.on('mouseover', function(e, t) { Ext.get(t). addClass('hovered');
});
Здесь второй параметр функции on (вообще-то, это не функция, а метод объекта, но об этом потом) — другая функция, объявленная там же. Эта функция принимает два параметра и содержит одно выражение.
В следующих главах, изучая библиотеку Ext Core, мы будем часто сталкиваться с функциями, которые присваиваются переменным и передаются в качестве параметра другим функциям. Настолько часто, что скоро привыкнем к этому.
Массивы
Нумерация элементов массива начинается с нуля.
Чтобы создать массив, нужно просто присвоить любой переменной список его элементов, разделенных запятыми и заключенных в квадратные скобки:
var someArray = [1, 2, 3, 4];
Здесь мы создали массив, содержащий четыре элемента, и присвоили его переменной someArray. После этого мы можем получить доступ к любому из элементов по его индексу, указав его после имени переменной массива в квадратных скобках:
a = massive[2];
В данном примере мы получили доступ к третьему элементу массива. (Нумерация элементов массива начинается с нуля — помните об этом!)
Определять сразу все элементы массива необязательно:
someArray2 = [1, 2, 4];
Здесь мы пропустили третий элемент массива, и он остался неопределенным (т. е. будет содержать значение undefined).
При необходимости мы легко сможем добавить к массиву еще один элемент, просто присвоив ему требуемое значение:
someArray[4] = 9;
При этом будет создан новый, пятый по счету, элемент массива с индексом 4 и значением 9.
Можно даже сделать так:
someArray[7] = 9;
В этом случае будут созданы четыре новых элемента, и восьмой элемент получит значение 9. Пятый, шестой и седьмой останутся неопределенными (undefined).
Мы можем присвоить любому элементу массива другой массив (или, как говорят опытные программисты, создать 
someArray[2] = ['n1', 'n2', 'n3'];
После этого можно получить доступ к любому элементу вложенного массива, указав последовательно оба индекса: сначала — индекс во 'внешнем' массиве, потом — индекс во вложенном:
str = someArray[2][1];
Переменная str получит в качестве значения строку, содержащуюся во втором элементе вложенного массива, — n2.
Ранее говорилось, что доступ к элементам массива выполняется по числовому индексу. Но JavaScript позволяет создавать и массивы, элементы которых имеют строковые индексы (
Пример:
var hash;
hash['AUDIO'] = 't_audio.htm'; hash['IMG'] = 't_img.htm'; hash['TITLE'] = 't_title.htm';
JavaScript также позволяет нам создать массив, вообще не содержащий элементов (пустой массив). Для этого достаточно присвоить любой переменной 'пустые' квадратные скобки:
var someArray;
someArray = [];
Разумеется, впоследствии мы можем и даже должны наполнить этот массив элементами:
someArray[0] = 1; someArray[1] = 2; someArray[2] = 3;
Массивы идеально подходят в тех случаях, когда нужно хранить в одном месте упорядоченный набор данных. Ведь массив фактически представляет собой одну переменную.
Ссылки
Осталось рассмотреть еще один момент, связанный с организацией доступа к данным. Это так называемые 

 
                