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

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

Жанры

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

Ниже приводится несколько примеров определений функций:

function hypotenuse(x, у) {

return Math.sqrt(x*x + y*y); // Инструкция return описывается далее

}

function factorial(n) { // Рекурсивная функция

if (n <= 1) return 1;

return n * factorial(n - 1);

}

Инструкции

объявления функций могут находиться в JavaScript-коде верхнего уровня или быть вложенными в определения других функций только на «верхнем уровне», т. е. объявления функций не могут находиться внутри инструкций
if
, циклов
while
или любых других конструкций. Из-за такого ограничения, накладываемого на объявления функций, спецификация ECMAScript не относит объявления функций к истинным инструкциям. Некоторые реализации JavaScript позволяют вставлять объявления функций в любые инструкции, но разные реализации по-разному обрабатывают эти случаи, поэтому включение объявлений функций в другие инструкции снижает переносимость программ.

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

var
, объявления функций, созданные с помощью инструкции
function
, неявно «поднимаются» в начало содержащего их сценария или функции, поэтому они видимы из любого места в сценарии или функции. Однако при использовании инструкции
var
поднимается только объявление переменной, а инициализация остается там, куда ее поместил программист. В случае же с инструкцией
function
поднимается не только имя функции, но и ее тело: все функции в сценарии или все функции, вложенные в функцию, будут объявлены до того, как начнется выполнение программного кода. Это означает, что функцию можно вызвать еще до того, как она будет объявлена.

Подобно инструкции

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

5.4. Условные инструкции

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

В подразделах ниже описывается основная условная инструкция языка JavaScript - инструкция

if/else
, а также более сложная инструкция
switch
, позволяющая создавать множество ответвлений.

5.4.1. Инструкция if

Инструкция

if
– это базовая управляющая инструкция, позволяющая интерпретатору JavaScript принимать решения или, точнее, выполнять инструкции в зависимости от условий. Инструкция имеет
две формы. Первая:

if (выражение) инструкция

В этой форме сначала вычисляется выражение. Если полученный результат является истинным, то инструкция выполняется. Если выражение возвращает ложное значение, то инструкция не выполняется. (Определения истинных и ложных значений приводятся в разделе 3.3.) Например:

if (username == null) // Если переменная username равна null или undefined,

username = "John Doe"; // определить ее

Аналогично:

// Если переменная username равна null, undefined, 0, "" или NaN,

// присвоить ей новое значение,

if (!username) username = "John Doe";

Обратите внимание, что скобки вокруг условного выражения являются обязательной частью синтаксиса инструкции

if
.

Синтаксис языка JavaScript позволяет вставить только одну инструкцию после инструкции

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

if (!address) {

address = "";

message = "Пожалуйста, укажите почтовый адрес.";

}

Вторая форма инструкции

if
вводит конструкцию
else
, выполняемую в тех случаях, когда выражение возвращает ложное значение. Ее синтаксис:

if (выражение)

инструкция 1

else

инструкция2

Эта форма инструкции выполняет

инструкцию1
, если выражение возвращает истинное значение, и
инструкцию2
, если выражение возвращает ложное значение. Например:

if (п == 1)

console.log("Получено 1 новое сообщение.");

else

console.log("Получено " + n + " новых сообщений.");

При наличии вложенных инструкций

if
с блоками
else
требуется некоторая осторожность - необходимо гарантировать, что
else
относится к соответствующей ей инструкции
if
. Взгляните на следующие строки:

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

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

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

Запечатанный во тьме. Том 1. Тысячи лет кача

NikL
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача

Чехов книга 3

Гоблин (MeXXanik)
3. Адвокат Чехов
Фантастика:
попаданцы
альтернативная история
аниме
6.00
рейтинг книги
Чехов книга 3

Моров. Том 5

Кощеев Владимир
4. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Моров. Том 5

Наследие Маозари

Панежин Евгений
1. Наследие Маозари
Фантастика:
рпг
попаданцы
аниме
5.80
рейтинг книги
Наследие Маозари

Эйзенштейн

Шкловский Виктор Борисович
Жизнь в искусстве
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Эйзенштейн

Дочь моего друга

Тоцка Тала
2. Айдаровы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Дочь моего друга

Я снова не князь! Книга XVII

Дрейк Сириус
17. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я снова не князь! Книга XVII

Ботаник

Щепетнов Евгений Владимирович
1. Ботаник
Фантастика:
фэнтези
боевая фантастика
4.56
рейтинг книги
Ботаник

Искушение генерала драконов

Лунёва Мария
2. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Искушение генерала драконов

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

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

Травница Его Драконейшества

Рель Кейлет
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Травница Его Драконейшества

Контртеррор

Валериев Игорь
6. Ермак
Фантастика:
альтернативная история
5.00
рейтинг книги
Контртеррор

Зодчий. Книга II

Погуляй Юрий Александрович
2. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга II