Четыре полезных JavaScript оператора, о которых вы могли не знать

Не секрет, что в JavaScript, операторы, предоставляют нам огромные возможности для реализации различных видов и типов логики в коде. Каждый оператор в JavaScript имеет свое назначение и синтаксис. Среди самых распространенных операторов можно выделить: условные операторы, операторы итерации и т.д. В этом посте я рассмотрю 4 не очень известных JavaScript оператора, ранее о которых вы могли и не знать, однако они помогут расширить ваши познания в JavaScript и взглянуть на ваш JS код по новому…

Пустой оператор

Вместо любого JavaScript оператора вы можете добавить пустой оператор, который пишется просто как точка с запятой – ;. Когда JavaScript интерпретатор доходит до пустого оператора и пытается его интерпретировать, то ничего не происходит и никакой код не выполняется. Поэтому пустые операторы также могут использоваться для замены подоператоров, которые вы не хотите выполнять.

Давайте теперь для наглядности рассмотрим пару примеров. Допустим у нас есть переменная cart со значением по умолчанию «пусто» и обычная переменная goods, которая дальше по коду будет менять переменную cart в зависимости от условия goods < 7 и тогда переменная примет значение – «мало» либо «много» при условии goods > 7 в противном случае мы сгенерируем ошибку. Пример кода:

Однако код выше выдаст ошибку если значение переменной goods будет равно 7, а значение переменной cart так и останется — «пусто». Так быть естественно не должно, поэтому добавим в код пустой оператор ; и возьмем его в условие  goods === 7.  После этого получится следующий код:

Теперь если goods === 7, интерпретатор не выполнит никаких инструкций и переменная cart сохранит свое значение по умолчанию.

Также например пустой оператор можно использовать при заполнении массива с помощью цикла.

Код выше выглядит слегка необычно, и все из-за того, что у цикла отсутствуют фигурные скобки и вместо них написан пустой оператор, который как раз и отвечает за безошибочное выполнение кода и правильное зацикливание. Обратите внимание также на интересную запись  cart[i++] = i, которая выполняется для каждой итерации цикла в рамках условия и массив каждый раз получает экземпляр со значениями i.

Оператор отладки (debugger)

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

В JavaScript оператор отладки работает так же как и стоп-точки (брекпоинты) за исключением того, что оператор непосредственно вставляется в исходный код, а не используется в качестве инструмента. Любой запущенный отладчик остановит выполнение скрипта, когда тот достигнет оператора debugger для того чтобы помочь вам в отладке кода.

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

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

Вы увидите, как скрипт остановится в месте отладчика и будет ждать ваших дальнейших действий.

Пример кода с оператором отладки debugger

Оператор метки

В JavaScript вы можете добавлять метки к определенными операторам. Делая пометки вы в дальнейшем сможете перейти к помеченному оператору, просто использовав его метку в коде. Если вам не совсем ясно как это выглядит, то можете провести аналогию с языком Pascal, где для перехода к меткам использовался оператор goto.

Помеченные операторы могут только использоваться вместе с операторами break и continue, т.к в JavaScript нет явного оператора goto в отличие от того же Pascal.

Break и continue могут быть использованы только внутри оператора цикла, такого как например for, внутри которого при прохождении цикла можно сделать исключение, а затем без проблем вернуться к очередной итерации. Таким образом, используя метки в цикле, вместе с continue или break можно легко контролировать его выполнение.

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

Когда значение переменной i равно 2, то выполнение цикла переходит опять в начало, вместо того чтобы выполняться дальше и вывести к консоли – 2.

Теперь рассмотрим другой пример с оператором break. Просто замените слово continue на break в коде выше, и при выполнении кода цикл никуда «прыгать» не будет, а остановится, когда значение переменой i будет равно двум.

Приведенные выше примеры кода были очень простыми и я надеюсь помогли вам разобраться в том, как работают операторы меток, но при разработке метки обычно используются в очень сложных кусках кода с циклами, где например необходимо «прыгать» между разными циклами, как в примере ниже.

В коде выше внешний цикл остановиться на значении 2 в переменной i и на 1 у переменной j, и консоль выведет следующий код.

Оператор with

Оператор with является весьма эффективным и зачастую недооцениваемым, хотя и противоречивым языковым средством JavaScript. Он позволяет размещать все свойства объекта в пределах текущей области действия, чтобы обращаться к ним и присваивать им значения, не предваряя их ссылкой на объект, к которому они принадлежат. Следует, однако, иметь в виду, что перспективы дальнейшего присутствия данного оператора в JavaScript довольно призрачны. Так, в спецификации ECMAScript 5 запрещается его применение в строгом режиме (use strict), причем до такой степени, что оно будет считаться синтаксической ошибкой.

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

А теперь давайте взглянем, как пример выше выглядел бы без применения оператора with:

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

Однако повторюсь, использовать этот код в строгом режиме не получится и оператор with целесообразно использовать только в случае «простого» объекта, как в примере выше. Поэтому в общем и целом я не сторонник ярого применения оператора with в коде, что собственно и вам советую.

Подписаться на новые статьи