Повторные и опущенные объявления 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Повторные и опущенные объявления



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

 

Область видимости переменной

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

Внутри тела функции локальная переменная имеет преимущество перед глобальной переменной с тем же именем.

var scope = "глобальная"; // Объявление глобальной переменной

function checkscope() {

var scope = "локальная"; // Объявление локальной переменной с тем же именем

document.write(scope); // Используется локальная переменная, а не глобальная

}

checkscope(); // Печатается слово "локальная"

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

scope = "глобальная"; // Объявление глобальной переменной, даже без var

function checkscope() {

scope = "локальная"; // Ой! Мы только что изменили глобальную переменную

document.write(scope); // Используется глобальная переменная

myscope = "локальная"; // Здесь мы неявно объявляем новую глобальную переменную

document.write(myscope); // Используется новая глобальнаяпеременная

}

checkscope(); // Печатает "локальнаялокальная"

Отсутствие блочной области видимости

Правило, согласно которому все переменные, объявленные в функции, определены во всей функции, может иметь удивительные следствия. Например:

var scope = "глобальная";

function f() {

alert(scope); // Показывает "undefined", а не"глобальная".

var scope = "локальная"; // Переменная инициализируется здесь,

// но определена она везде в функции.

alert(scope); // Показывает "локальная"

}

f();

Кто-то может подумать, что в результате первого вызова alert() будет напечатано слово «глобальная», т. к. инструкция var, объявляющая локальную переменную, еще не была выполнена. Однако согласно правилу определения областей видимости все происходит не так. Локальная переменная определена во всем теле функции, значит, глобальная переменная с тем же именем скрыта во всем теле функции. Хотя локальная переменная определена везде, до выполнения инструкции var она не инициализирована. Поэтому функция f в предыдущем примере эквивалентна следующему фрагменту:

function f() {

var scope; // Локальная переменная определяетсяв начале функции

alert(scope); // Здесь она существует,но имеет значение undefined

scope = "локальная"; // Здесь мы инициализируем переменную и присваиваем ей значение

alert(scope); // Здесь она уже имеет значение

}

Этот пример показывает, почему хорошая практика программирования подразумевает помещение всех объявлений переменных в начале функции.

 

Теги JavaScript

JavaScript не предназначен для создания автономных приложений. Программа на JavaScript встраивается непосредственно в исходный текст HTML-документа и интерпретируется брaузером по мере загрузки этого документа. С помощью JavaScript можно динамически изменять текст загружаемого HTML-документа и реагировать на события, связанные с действиями посетителя или изменениями состоятия документа или окна.

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

4.5.1 Тег <script>

Сценарий JavaScript встраивается в HTML-документ с помощью тега <script>.

Пример 4.1

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<head>

<meta http-equiv="Content-Type"

content="text/html; charset=windows-1251">

</head>

<body>

<h1>Начнем?</h1>

<script type="text/javascript">

<!--

document.write("Привет!");

//-->

</script>

</body>

</html>

РЕЗУЛЬТАТ:

Начнем?

 

Привет! Привет!

Текст сценария оформляется как комментарий, чтобы не было проблем у посетителей, брaузеры которых не понимают JavaScript. Кроме того к символам, завершающим комментарий добавляется еще два символа " / ", т.к. некоторые браузеры рассматривает строку, состоящую только из символов " --> ", как ошибочную.

В первом примере для объекта с именем document вызывается метод write. В качестве параметра ему передается текстовая строка "Привет!". Строка закрывается символом "; ", которым отделяются друг от друга все операторы JavaScript.

Объект document – это HTML-документ, загруженный в окно брaузера. Метод write записывает в тело HTML-документа строку "Привет!". При этом документ будет выгдядеть так, как будто эта строка находится в нем на месте сценария.

Имейте в виду, что JavaScript различает строчные и прописные буквы. Кроме того символ дефиса в JavaScript распознается как минус, т.е. если фон объекта в HTML-документе задается через свойство background-color, то в JavaScript - через backgroundColor.

Пример 4.2

 

Цвет фона объекта меняется с белого на красный при наведении на объект мыши:

<img src="attachment.png" style="border:none;float:right;margin-left:5px;"

OnMouseOver="this.style.backgroundColor='red';"

OnMouseOut="this.style.backgroundColor='white';">

 

Переменные в JavaScript

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

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

Числа в строки интерпретатор JavaScript преобразует автоматически. Для преобразования строк в числа используют специальные функции parseInt и parseFloat.

Пример

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<head>

<meta http-equiv="Content-Type"

content="text/html; charset=windows-1251">

</head>

<body>

<h1>Пример преобразования типов</h1>

<script type="text/javascript">

<!--

var Buf="";

Buf=100+"&nbsp;- число сто<br>";

Buf+=(parseInt("50")+50)+"&nbsp;- число сто<br>";

document.write(Buf);

//-->

</script>

</body>

</html>

 

РЕЗУЛЬТАТ:

Пример преобразования типов

 

100 - число сто
100 - число сто
100 - число сто
100 - число сто

 

4.5.3 Примеры использования простейших преобразований типов:

var myVar = "3.14159",

str = ""+ myVar,// в string

int = ~~myVar, // в integer

float = 1*myVar, // во float

bool =!!myVar, // в boolean - все непустые строки и числа кроме 0 будут true

array = [myVar]; // в array

Конвертирование в даты (new Date(myVar)) и регулярные выражения (new RegExp(myVar)) нужно делать с использованием конструкторов. Для создания регулярных выражений используйте структуру: /регулярное_выражение/флаги.

Операторы языка JavaScript

Операторы JavaScript напоминают общеизвестные операторы языка С++.

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

- Изменение знака на противоположный
! Дополнение. Используется для реверсирования значения логических переменных
++ Увеличение значения переменной. Может применяться и как префикс, и как суффикс
-- Уменьшение значения переменной. Может применяться и как префикс, и как суффикс

Бинарные операторы



Поделиться:


Последнее изменение этой страницы: 2016-12-28; просмотров: 216; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.222.47 (0.012 с.)