русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Переменные


Дата добавления: 2013-12-23; просмотров: 1597; Нарушение авторских прав


Переменная - это область памяти, имеющая свое имя и хранящая некоторые данные. Переменные в JavaScript объявляются с помощью оператора var, при этом можно давать или не давать им начальные значения:

var k;

var h='Привет!';

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

var k, h='Привет!';

var t=37, e=2.71828;

Тип переменной определяется по присвоенному ей значению. Язык JavaScript - слабо типизирован: в разных частях программы можно присваивать одной и той же переменной значения различных типов, и интерпретатор будет "на лету" менять тип переменной. Узнать тип переменной можно с помощью оператораtypeof():

var i=5; alert(typeof(i));

i= new Array(); alert(typeof(i));

i= 3.14; alert(typeof(i));

i= 'Привет!'; alert(typeof(i));

i= window.open(); alert(typeof(i));

Переменная, объявленная оператором var вне функций, является глобальной - она "видна" всюду в скрипте. Переменная, объявленная оператором var внутри какой-либо функции, является локальной - она "видна" только в пределах этой функции. Подробнее о функциях будет рассказано в следующем разделе этой лекции.

Например, в следующем фрагменте ничего не будет выведено на экран, несмотря на то, что мы обращаемся к переменной k после описания функции, и даже после ее вызова:

function f()

{ var k=5; }

 

f(); alert(k);

Причина в том, что переменная k является локальной, и она существует только в процессе работы функции f(), а по окончании ее работы уничтожается.

Если имеется глобальная переменная k, а внутри функции объявляетсялокальная переменная с тем же именем (оператором var k ), то это будет другая переменная, и изменение ее значения внутри функции никак не повлияет на значение глобальной переменной с тем же именем. Например, этот скрипт выдаст 7, поскольку вызов функции f() не затронет значения глобальной переменной k:



var k=7;

 

function f()

{ var k=5; }

 

f(); alert(k);

То же касается и аргументов при описании функций (с той лишь разницей, что перед ними не нужно ставить var ): если имеется глобальная переменная k, и мы опишем функцию function f(k) {...}, то переменная k внутри {...} никак не связана с одноименной глобальной переменной. В этом плане JavaScript не отличается от других языков программирования.

Примечание. Объявлять переменные можно и без оператора var, просто присваивая переменной начальное значение. Так зачастую делают с переменными циклов. В следующем примере, даже если переменная i не была объявлена ранее, все будет работать корректно:

for(i=0; i<8; i++) { ... }

Однако опускать var не рекомендуется. Во-первых, это нарушает ясность кода: если написано i=5, то непонятно, вводится ли здесь новая переменная или меняется значение старой. Во-вторых, и это главное, нужно помнить следующий момент, часто приводящий к неправильной работе программы.

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

function f()

{ var i=5; k=7; }

 

f(); alert(k);

В приведённом примере после i=5 стоит точка с запятой (а не запятая). Значит,k=7 - это отдельное объявление переменной, уже без оператора var. Поэтому переменная k "видна" снаружи и ее значение ( 7 ) будет выведено операторомalert(k). Чтобы скрыть переменную k, нужно было после i=5 поставить запятую.

Рассмотрим другой пример, показывающий, к каким неожиданным последствиям может привести отсутствие var при описании переменной:

function f(i)

{ k=7;

if(i==3) k=5;

else { f(3); alert(k); }

}

f(0);

Мы вызываем f(0), переменной присваивается значение k=7, далее выполнение функции идет по ветке else - и оператор alert(k) выдает 5 вместо ожидавшегося 7. Причина в том, что вызов f(3) в качестве "побочного эффекта" изменил значение k. Чтобы такого не произошло, нужно перед k=7поставить var. Тогда переменная k будет локальной и вызов f(3) не сможет ее изменить, так как при вызове функции создаются новые копии всех ее локальных переменных.

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



<== предыдущая лекция | следующая лекция ==>
Литералы | Массивы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.