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

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

Шрифт:

4.12.3. Использование eval в строгом режиме

Строгий режим (раздел 5.7.3), определяемый стандартом ECMAScript 5, вводит дополнительные ограничения на поведение функции

eval
и даже на использование идентификатора «eval». Когда функция
eval
вызывается из программного кода, выполняемого в строгом режиме, или когда строка, которая передается функции, начинается с директивы «use strict», то
eval
выполняет программный код в частном окружении. Это означает, что в строгом режиме выполняемый программный код может обращаться к локальным переменным и изменять их, но он не может определять новые переменные или функции в локальной области видимости.

Кроме того, строгий режим делает функцию

eval
еще более похожей на оператор, фактически превращая «eval» в зарезервированное слово. В этом режиме нельзя переопределить функцию
eval
новым значением. А также нельзя объявить переменную, функцию, параметр функции или параметр блока
catch
с именем «eval».

4.13. Прочие операторы

JavaScript поддерживает еще несколько операторов, которые описываются в следующих разделах.

4.13.1. Условный оператор (?:)

Условный оператор - это единственный тернарный (с тремя операндами) оператор в JavaScript, и иногда он так и называется - «тернарный оператор». Этот оператор обычно записывается как

?:
, хотя в программах он выглядит по-другому. Он имеет три операнда, первый предшествует символу ?, второй - между ? и :, третий - после :. Используется он следующим образом:

х > 0 ? х : -х // Абсолютное значение х

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

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

if
, но оператор
?:
часто оказывается удобным сокращением. Ниже приводится типичный пример, в котором проверяется, определена ли переменная (и имеет истинное значение), и если да, то берется ее значение, а если нет, берется значение по умолчанию:

greeting = "hello " + (username ? username : "there");

Эта проверка эквивалентна следующей конструкции if, но более компактна:

greeting = "hello";

if (username)

greeting += username;

else

greeting += "there";

4.13.2. Оператор typeof

Унарный оператор

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

Оператор typeof может применяться, например, в таких выражениях:

(typeof value == "string") ? ..... + value + ..... : value

Оператор

typeof
можно также использовать в инструкции switch (раздел 5.4.3). Обратите внимание, что операнд оператора
typeof
можно заключить в скобки, что делает оператор
typeof
более похожим на имя функции, а не на ключевое слово или оператор:

typeof(і)

Обратите внимание, что для значения null оператор

typeof
возвращает строку «object». Если вам потребуется отличать
null
от других объектов, добавьте проверку для этого спецслучая. Для объектов, определяемых средой выполнения, оператор
typeof
может возвращать строку, отличную от «object». Однако на практике большинство таких объектов в клиентском JavaScript имеют тип «object».

Для всех объектных типов и типов массивов результатом оператора

typeof
является строка «object», поэтому он может быть полезен только для определения принадлежности значения к объектному или к простому типу. Чтобы отличить один класс объектов от другого, следует использовать другие инструменты, такие как оператор
instanceof
(раздел 4.9.4), атрибут
class
(раздел 6.8.2) или свойство
constructor
(разделы 6.8.1 и 9.2.2).

  • Читать дальше
  • 1
  • ...
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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