Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

}

Переменные, объявленные с помощью инструкции

var
, определены в любой точке функции, где они объявлены, но они не инициализируются, пока инструкция
var
не будет выполнена фактически. То есть переменная существует (обращение к ней не вызывает исключение ReferenceError), но при попытке использовать переменную до инструкции
var
она будет иметь значение
undefined
. Переменные, объявляемые с помощью инструкции
let
, действуют аналогично: если попытаться использовать переменную до инструкции
let
(но внутри блока, где находится инструкция
let
), переменная будет доступна, но она будет иметь значение
undefined
.

Примечательно, что данная проблема отсутствует при использовании

let
для объявления переменной цикла - просто сам синтаксис не позволяет использовать переменную до ее инициализации. Существует еще один случай использования инструкции
let
, где отсутствует проблема использования переменной до ее инициализации. Блок, образуемый инструкцией
let
(в противоположность объявлению переменной с помощью инструкции
let
, показанному выше), объединяет блок программного кода с объявлением переменных для этого блока и их инициализацией. В этом случае переменные и выражения их инициализации заключаются в круглые скобки, за которыми следует блок инструкций в фигурных скобках:

let х=1, у=2;

let (х=х+1,у=х+2) { // Отметьте, что здесь выполняется сокрытие переменных

console.log(х+у); // Выведет 5

};

console.log(x+y); // Выведет 3

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

Последний случай использования ключевого слова

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

let х=1, у=2;

console.log(let (х=х+1,у=х+2) х+у); // Выведет 5

Некоторые формы использования ключевых слов

const
и
let
(не обязательно все четыре, описанные здесь) в будущем наверняка будут включены в стандарт ECMAScript.

Версии JavaScript

В этой главе при упоминании какой-то определенной версии JavaScript подразумевается версия языка, реализованная проектом Mozilla в интерпретаторах Spider monkey и Rhino и в веб-броузере Firefox.

Некоторые расширения языка, представленные здесь, определяют новые ключевые слова (такие как

let
), и, чтобы избежать нарушения работоспособности существующего программного кода, использующего эти ключевые слова, JavaScript требует явно указывать версию, чтобы иметь возможность использовать расширения. Если вы пользуетесь автономным интерпретатором Spidermonkey или Rhino, версию языка можно указать в виде параметра командной строки или вызовом встроенной функции
version.
(Она ожидает получить номер версии, умноженный на сто. Чтобы получить возможность использовать ключевое слово
let
, нужно выбрать версию JavaScript 1.7, т.е. передать функции число 170.) В Firefox указать номер версии можно в теге script:

<script type=”application/JavaScript; version=1.8">

********************

11.3. Присваивание с разложением

В версии Spidermonkey 1.7 реализована разновидность составных инструкций присваивания, известная как присваивание с разложением. (Вы могли встречать присваивание с разложением в языках программирования Python или Ruby.) При присваивании с разложением значение справа от знака «равно» является массивом или объектом («составным» значением), а слева указывается одно или более имен переменных с применением синтаксиса, имитирующего литерал массива или объекта.

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

var
и
let
.

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

Следующий пример демонстрирует простоту присваивания с разложением при использовании с массивами значений:

let [х,у] = [1,2];
// То же, что и let х=1, у=2

[х,у] = [x+l,y+1];
// То же. что и х = х + 1, у = у+1

[х,у] = [у,х];
// Обмен значений двух переменных

  • Читать дальше
  • 1
  • ...
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: