Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

Подмножество Caja - это часть OpenSocial API ; оно используется компанией Yahoo! на ее веб-сайтах. Например, содержимое, доступное на порталеорганизовано в модули Caja.

FBJS

Подмножество FBJS - это версия JavaScript, используемая на сайте Facebook с целью дать пользователям возможность размещать непроверенное содержимое на страницах своих профилей. Подмножество FBJS обеспечивает безопасность за счет трансформации программного кода. Инструмент преобразования вставляет проверки, которые выполняются во время выполнения и предотвращают доступ к глобальному объекту с помощью ключевого слова this. Также он переименовывает все идентификаторы верхнего уровня, добавляя к ним префикс, определяемый модулем. Благодаря переименованию предотвращаются любые попытки изменить или прочитать глобальные переменные или переменные, принадлежащие другому модулю. Кроме того, благодаря добавлению префикса, все вызовы функции eval преобразуются в вызовы несуществующей функции. Подмножество FBJS реализует собственное безопасное подмножество DOM API.

Microsoft Web Sandbox

Подмножество Microsoft Web Sandbox (http:HwebsandboxXivelabs.com/) определяет довольно широкое подмножество языка JavaScript (плюс HTML и CSS) и обеспечивает безопасность за счет радикальной переработки программного кода, фактически реализуя безопасную виртуальную машину JavaScript поверх небезопасной.

11.2. Константы и контекстные переменные

Теперь оставим подмножества языка и перейдем к расширениям. В версии JavaScript 1.5 и выше появилась возможность использовать ключевое слово

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

const pi = 3.14; // Определить константу и дать ей значение.

pi = 4; // Любые последующие операции присваивания игнорируются.

const pi = 4; // Повторное объявление константы считается ошибкой.

var pi = 4; // Это тоже ошибка.

Ключевое слово

const
действует подобно ключевому слову
var
: для него не существует области видимости блока и объявления константы поднимаются в начало вмещающего определения функции (раздел 3.10.1).

Отсутствие в языке JavaScript области видимости блока для переменных долгое время считали недостатком, поэтому в версии JavaScript 1.7 появилось ключевое слово

let
, решающее эту проблему. Ключевое слово
const
всегда было зарезервированным (но не используемым) словом в JavaScript, благодаря чему константы можно добавлять, не нарушая работоспособность существующего программного кода. Ключевое слово
let
не было зарезервировано, поэтому оно не распознается версиями интерпретаторов ниже 1.7.

Ключевое слово

let
имеет четыре формы использования:

• как инструкция объявления переменной, подобно инструкции

var
;

• в циклах

for
или
for/in
, как замена инструкции
var
;

• как инструкция блока, для объявления новых переменных и явного ограничения их области видимости; и

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

В простейшем случае ключевое слово

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

function oddsums(n) {

let total = 0, result=[]; // Определены в любой точке функции

for(let х = 1; х <= n; х++) { // переменная х определена только в цикле

let odd = 2*х-1; // переменная odd определена только в цикле

total += odd;

result.push(total),

}

// Попытка обратиться к переменной х или odd здесь

// вызовет исключение ReferenceError return result;

}

oddsums(5); // Вернет [1,4,9,16,25]

Обратите внимание, что в этом примере инструкция

let
используется так же, как замена инструкции
var
в цикле
for
. Она создает переменную, которая будет доступна только в теле цикла и в выражениях проверки условия и увеличения цикла. Точно так же можно использовать инструкцию
let
в циклах
for/in
for each
; раздел 11.4.1):

о = {х:1,у:2};

for(let р in о) console.log(p); // Выведет х и у

for each(let v in о) console.log(v); // Выведет 1 и 2

console.log(p) // ReferenceError: p не определена

Существует одно интересное отличие между случаями, когда

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

let х = 1;

for(let х = х + 1; х < 5; х++)

console.log(x); // Выведет 2,3,4

{ // Начало блока, чтобы образовать область видимости новой переменной

let х = х + 1; // переменная х не определена, поэтому х+1 = NaN

console.log(x); // Выведет NaN

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

Воронцов. Перезагрузка. Книга 3

Тарасов Ник
3. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
6.00
рейтинг книги
Воронцов. Перезагрузка. Книга 3

Вампир. Английская готика. XIX век

Стивенсон Роберт Льюис
Фантастика:
ужасы и мистика
7.67
рейтинг книги
Вампир. Английская готика. XIX век

Древесный маг Орловского княжества 13

Павлов Игорь Васильевич
13. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 13

Воин-Врач

Дмитриев Олег
1. Воин-Врач
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
6.00
рейтинг книги
Воин-Врач

На границе империй. Том 8

INDIGO
12. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8

Снега

Чепурин Юлий Петрович
Поэзия:
драматургия
5.00
рейтинг книги
Снега

Прапорщик. Назад в СССР. Книга 6

Гаусс Максим
6. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прапорщик. Назад в СССР. Книга 6

Кодекс Охотника. Книга XXXVII

Винокуров Юрий
37. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXVII

Эпоха Опустошителя. Том V

Павлов Вел
5. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том V

Лекарь

Первухин Андрей Евгеньевич
1. Лекарь
Фантастика:
фэнтези
попаданцы
альтернативная история
7.50
рейтинг книги
Лекарь

Ваше Сиятельство

Моури Эрли
1. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ваше Сиятельство

Третий Генерал: Том V

Зот Бакалавр
4. Третий Генерал
Фантастика:
городское фэнтези
аниме
сказочная фантастика
попаданцы
5.00
рейтинг книги
Третий Генерал: Том V

Цеховик. Книга 1. Отрицание

Ромов Дмитрий
1. Цеховик
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Цеховик. Книга 1. Отрицание

День поминовения

Нотебоом Сэйс
Проза:
современная проза
5.00
рейтинг книги
День поминовения