JavaScript поддерживает еще несколько операторов, которые описываются в этом уроке: typeof, delete, void, «запятая», операторы доступа к массивам [] и объектам (.).

Оператор typeof — это унарный оператор, который записывается перед своим единственным операндом любого типа и возвращает строковое значение, содержащее тип операнда.

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

Значение x typeof x
undefined
null
true или false
любое число, Infinity или NaN
любая строка, ""
любая функция, function() {}
любой объект или массив, {}|[]
любой символ, SymЬol()
"undefined"
"object"
"boolean"
"number"
"string"
"function"
"object"
"symbol"

Операнд оператора typeof может быть записан в двух формах – в скобках () и без скобок:

Выполнить код »

Примечание: Операнд typeof можно заключить в скобки (), благодаря чему ключевое слово typeof выглядит как имя функции, а не как ключевое слово или оператор: typeof(x). Последнее – вполне допустимый синтаксис, впрочем необязательные круглые скобки лишь создают ненужную группу выражений.

У оператора typeof есть одна особенность, которую обычно называют ошибкой: typeof null возвращает "object". Тем не менее, это технически правильное значение, потому что специальное значение null считается ссылкой на пустой объект.

На заметку: Несмотря на то, что функции в JavaScript являются разновидностью объектов, а не отдельным типом данных, оператор typeof выделяет функции отдельно, возвращая для них "function". На практике эта особенность позволяет легко определить функцию, что обычно весьма удобно.

Оператор void – это унарный оператор, записываемый перед единственным операндом любого типа. У void есть только одна задача: вычислить свой операнд, а затем возвратить undefined.

Чаще всего оператор void применяется на стороне клиента в URL-адресе с признаком псевдопротокола javascript:, где он позволяет вычислять выражение ради его побочных действий, не отображая в браузере вычисленное значение:

Выполнить код »

Это не рекомендуемый подход, но время от времени он встречается в HTML-документах.

Оператор «запятая» (,) выполняет оба операнда (слева направо) и возвращает значение второго оператора. Левый операнд вычисляется всегда и перед вычислением правого операнда учитываются все побочные эффекты.

Это означает, что значение выражения, находящегося с правой стороны, станет значением разделенного запятыми выражения. Например:

Выполнить код »

Скобки необходимы, поскольку оператор «запятая» имеет более низкий приоритет по сравнению с оператором присваивания. В выражении a = (7, 5) для задания приоритета использованы скобки, иначе оператор присваивания (=) выполнился бы до запятой (,), получилось бы a=7, а не 5.

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

Следующий пример демонстрирует, что хотя переменной y будет присвоен только последний элемент (x), но выражение слева от запятой (x += 1) также будет вычислено:

Выполнить код »

На практике оператор «запятая» обычно используется только в сочетании с инструкцией for:

Выполнить код »

Здесь первая запятая является частью синтаксиса инструкции var. Вторая запятая является оператором: она позволяет внедрить два выражения (i++ и j--) в инструкцию (цикл for), которая ожидает одно выражение.

В JavaScript объект — это набор свойств ассоциированных с ним. Свойство объекта можно рассматривать как переменную, которая закреплена за этим объектом. Свойства объекта определяют его характеристики. Получить доступ к свойству объекта можно с помощью оператора «точка» (.) или оператора «квадратные скобки» ([]).

Например, давайте создадим объект myAuto и, применив оператор «точка», определим его свойства make, model, и year. Вы определяете свойство, просто указывая его значение следующим образом:

var myAuto = {};
myAuto.make = "Mercedes";
myAuto.model = "Maybach";
myAuto.year = 2018;

Доступ к свойствам объектов JavaScript можно получить с помощью оператора «точка» (.) или через квадратные скобки []. Объекты являются ассоциативными массивами, так как каждое свойство ассоциировано с именем, через которое можно получить доступ к нему. Например, доступ к свойствам объекта myAuto можно получить следующим образом:

Выполнить код »

Слева от оператора «точка» (.) указывается объект (массив или функция), а справа – идентификатор (имя свойства), к которому выполняется доступ.

Слева от оператора «квадратные скобки» [] указывается объект (массив или функция), а внутри квадратных скобок – имя свойства (или индекс элемента массива). Именем свойства может быть строка или число.

Примечание: Правый операнд оператора «точка» (.) не может быть строкой или переменной, содержащей строку – он должен быть точным именем свойства или метода без каких-либо кавычек.

На заметку: При попытке получить доступ к несуществующему в объекте свойству, интерпретатор JavaScript не генерирует ошибку, а возвращает в качестве значения выражения undefined.

Оператор «квадратные скобки» [] обычно применяется для обращения к элементам массива. Для доступа к свойствам объекта оператор [] менее удобен, так как требует заключения имени свойства в кавычки.

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

Выполнить код »

Такое присвоение как person["favorite music"] или person["my name"] было бы невозможно через оператор «точка», так интерпретатор JavaScript после первого пробела подумает, что свойство закончилось, и далее выдаст синтаксическую ошибку:

Выполнить код »

Оператор delete используется для удаления свойств объекта и элементов массива. Он возвращает true, если удаление прошло успешно, и false в противном случае.

Длина массива после удаления из него элемента с помощью оператора delete остается прежней. Удаленный элемент принимает значение undefined:

Выполнить код »

На заметку: Удаленный элемент массива принимает значение undefined, вместе с ним удаляется и его индекс. Оставшиеся элементы сохраняют свои прежние индексы, а длина массива не изменяется.

Некоторые свойства объектов не могут быть удалены. В спецификации ECMAScript такие свойства обозначены флагом DontDelete. Можно удалить переменные, объявленные глобально, т.е. без ключевого слова var, но нельзя – объявленные через var:

Выполнить код »

На заметку: Удаленное свойство объекта, переменная или элемент массива не просто устанавливается в undefined. Когда переменная удалена, она прекращает существование.


  • Создайте объект obj. Выведите на экран свойство элемента с именем 'animal' двумя способами: через квадратные скобки и через оператор «точка»:

    var obj = {fruit: "an Apple", flower: "rose", animal: "dog"};
    /* ваш код */
    
    Показать решение

    Решение:

    Выполнить код »
  • Объект person

    1. Создайте пустой объект person.
    2. Добавьте свойство name со значением введенным пользователем (через prompt).
    3. Добавьте свойство surname со значением введенным пользователем.
    4. Добавьте свойство age со значением введенным пользователем.
    5. Выведите на экран свойства объекта person.
    6. Поменяйте значение name на John и выведите его на экран.
    Показать решение

    Решение:

    Выполнить код »
    1. Создайте массив arr с элементами 'Привет, ', 'мир' и '!'.
    2. Удалите второй элемент массива и убедитесь, что он удален.
    3. Создайте второй элемент массива 'JavaScript'.
    4. Используя элементы массива arr выведите на экран фразу 'Привет, JavaScript!'.

    Показать решение

    Решение:

    Алгоритм решения задачи:

    1. Второй элемент массива хранится под индексом 1, это значит, что для доступа к нему мы должны написать arr[1].
    2. Применив оператор delete удаляем arr[1].
    3. С помощью оператора доступа создаём снова второй элемент массива.
    4. Далее с помощью оператора '+' мы сложим три наши строки ('Привет, ', 'JavaScript' и '!') в одну строку таким образом arr[0] + arr[1] + arr[2], и выведем на экран с помощью alert.

    Выполнить код »

Комментарии

пожелания к комментариям…
  • Приветствуются комментарии, соответствующие теме урока: вопросы, ответы, предложения.
  • Одну строчку кода оборачивайте в тег <code>, несколько строчек кода — в теги <pre><code>...ваш код...</code></pre>.
  • Допускаются ссылки на онлайн-песочницы (codepen, plnkr, JSBin и др.).