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

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

Жанры

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
. Взгляните на следующие строки:

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

Тактик

Земляной Андрей Борисович
2. Офицер
Фантастика:
альтернативная история
7.70
рейтинг книги
Тактик

Двойник короля 15

Скабер Артемий
15. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 15

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Я граф. Книга XII

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

Источник

Билик Дмитрий Александрович
11. Бедовый
Фантастика:
юмористическое фэнтези
городское фэнтези
мистика
7.00
рейтинг книги
Источник

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

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

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

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

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Третий

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

Третий. Том 6

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
фантастика: прочее
попаданцы
5.00
рейтинг книги
Третий. Том 6

Товарищ "Чума" 10

lanpirot
10. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Товарищ Чума 10

Я еще не царь

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

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

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4

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

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