русс | укр

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

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

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

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


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

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


Дата добавления: 2015-07-09; просмотров: 406; Нарушение авторских прав


 

Обратите внимание: в отличие от C, C++ и Java, в JavaScript нет области види_ мости на уровне блоков. Все переменные, объявленные внутри функции, незави_ симо от того, где именно это сделано, определены во всей функции. В следующем фрагменте переменные i, j и k имеют одинаковые области видимости: все три оп_ ределены во всем теле функции. Это было бы не так, если бы код был написан на C, C++ или Java:

function test(o) {

var i = 0; // i определена во всей функции

if (typeof o == "object") {

var j = 0; // j определена везде, а не только в блоке

for(var k = 0; k < 10; k++) { // k определена везде, не только в цикле

document.write(k);

}

document.write(k); // k все еще определена: печатается 10

}

document.write(j); // j определена, но может быть не инициализирована

}

 

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

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

function f() {

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

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

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

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

}

f();


 

Кто_то может подумать, что в результате первого вызова alert() будет напечата_ но слово «глобальная», т. к. инструкция var, объявляющая локальную перемен_


 

4.4. Элементарные и ссылочные типы
   

 

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



function f() {      
var scope; // Локальная переменная определяется в начале функции
alert(scope); // Здесь она существует, но имеет значение undefined

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

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

}

 

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

 



<== предыдущая лекция | следующая лекция ==>
Область видимости переменной | Неопределенные и неинициализированные переменные


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


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

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

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


 


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

 
 

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

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