Выразительный JavaScript (Хавербеке) - страница 33

Сперва он решил разработать структуру данных для хранения этой информации.

Наборы данных

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

>2, 3, 5, 7, 11

Можно поиграть со строками – строки могут быть любой длины, в них можно поместить много данных, и использовать для представления этого набора >“2 3 5 7 11”. Но это неудобно. Нам нужно будет как-то вынимать оттуда числа или вставлять новые в строку.

К счастью, JavaScript предлагает тип данных специально для хранения последовательностей чисел. Он называется массивом (array), и записывается, как список значений в квадратных скобках, разделённых запятыми:

>var listOfNumbers = [2, 3, 5, 7, 11];

>console.log(listOfNumbers[1]);

>// → 3

>console.log(listOfNumbers[1 - 1]);

>// → 2

Запись для получения элемента из массива тоже использует квадратные скобки. Пара скобок после выражения, содержащая внутри ещё одно выражение, найдёт в массиве, который задан первым выражением, элемент, порядковый номер которого задан вторым выражением.

Номер первого элемента – ноль, а не один. Поэтому первый элемент можно получить так: >listOfNumbers[0]. Если вы раньше не программировали, придётся привыкнуть к такой нумерации. Но она имеет давнюю традицию, и всё время, пока её последовательно соблюдают, она прекрасно работает.

Свойства

Мы видели много подозрительных выражений вроде >myString.length (получение длины строки) и >Math.max (получение максимума) в ранних примерах. Эти выражения используют свойства величин. В первом случае, мы получаем доступ к свойству >length (длина) переменной >myString. Во втором — доступ к свойству >max объекта >Math (который является набором функций и переменных, связанных с математикой).

Почти у всех переменных в JavaScript есть свойства. Исключения — >null и >undefined. Если вы попробуете получить доступ к несуществующим свойствам этих не-величин, получите ошибку:

>null.length;

>// → TypeError: Cannot read property 'length' of null

Два основных способа доступа к свойствам – точка и квадратные скобки. >value.x и >value[x] получают доступ к свойству >value – но не обязательно к одному и тому же. Разница в том, как интерпретируется >x. При использовании точки запись после точки должна быть именем существующей переменной, и она таким образом напрямую вызывает свойство по имени. При использовании квадратных скобок выражение в скобках вычисляется для получения имени свойства. >value.x вызывает свойство под именем “x”, а >value[x] вычисляет выражение >x и использует результат в качестве имени свойства.