русс | укр

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

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

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

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


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

Инструкция for/in


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


 

Ключевое слово for в JavaScript существует в двух ипостасях. Мы только что ви_ дели его в цикле for. Оно также используется в инструкции for/in. Эта инструк_ ция – несколько иной вид цикла, имеющего следующий синтаксис:

 

for (переменная in объект)

инструкция

 

Здесь переменная должна быть либо именем переменной, либо инструкцией var, объявляющей переменную, либо элементом массива, либо свойством объекта (т. е. должна быть чем_то, что может находиться левой части выражения при_ сваивания). Параметр объект – это имя объекта или выражение, результатом ко_ торого является объект. И как обычно, инструкция – это инструкция или блок ин_ струкций, образующих тело цикла.

 

Элементы массива можно перебирать простым увеличением индексной перемен_ ной при каждом исполнении тела цикла while или for. Инструкция for/in пре_ доставляет средство перебора всех свойств объекта. Тело цикла for/in исполня_ ется единожды для каждого свойства объекта. Перед исполнением тела цикла имя одного из свойств объекта присваивается переменной в виде строки. В теле цикла эту переменную можно использовать для получения значения свойства


 

6.10. Метки
   

 

объекта с помощью оператора []. Например, следующий цикл for/in печатает имена и значения всех свойств объекта:

 

for (var prop in my_object) {

document.write("имя: " + prop + "; значение: " + my_object[prop], "<br>");

}

 

Обратите внимание: переменной в цикле for/in может быть любое выражение, если только результатом его является нечто, подходящее для левой части при_ сваивания. Это выражение вычисляется при каждом вызове тела цикла, т. е. ка_ ждый раз оно может быть разным. Так, скопировать имена всех свойств объекта в массив можно следующим образом:



 

var o = {x:1, y:2, z:3}; var a = new Array();

var i = 0;

for(a[i++] in o) /* пустое тело цикла */;

 

Массивы в JavaScript – это просто специальный тип объектов. Следовательно, цикл for/in может использоваться для перебора элементов массива так же, как свойств объекта. Например, предыдущий блок кода при замене строки на приве_ денную ниже перечисляет «свойства» 0, 1 и 2 массива:

for(i in a) alert(i);

 

Цикл for/in не задает порядка, в котором свойства объекта присваиваются пере_ менной. Нельзя заранее узнать, каким будет этот порядок, и в различных реали_ зациях и версиях JavaScript поведение может быть разным. Если тело цикла for/in удалит свойство, которое еще не было перечислено, это свойство перечис_ лено не будет. Если тело цикла определяет новые свойства, то будут или нет пе_ речислены эти свойства, зависит от реализации.

 

Цикл for/in на самом деле не перебирает все свойства всех объектов. Так же как некоторые свойства объектов помечаются как доступные только для чтения или постоянные (не удаляемые), свойства могут помечаться как неперечислимые. Такие свойства не перечисляются циклом for/in. Если все свойства, определен_ ные пользователем, перечисляются, то многие встроенные свойства, включая все встроенные методы, не перечисляются. Как мы увидим в главе 7, объекты могут наследовать свойства от других объектов. Унаследованные свойства, кото_ рые определены пользователем, также перечисляются циклом for/in.

 

Метки

 

Метки case и default: в сочетании с инструкцией switch – это особый вариант бо_ лее общего случая. Любая инструкция может быть помечена указанным перед ней именем идентификатора и двоеточием:

 

идентификатор: инструкция

 

Здесь идентификатор может быть любым допустимым в JavaScript идентификато_ ром, не являющимся зарезервированным словом. Имена меток отделены от имен переменных и функций, поэтому программист не должен беспокоиться о кон_ фликте имен, если имя метки совпадает с именем переменной или функции. Пример инструкции while с меткой:


 

110 Глава 6. Инструкции

parser:

while(token != null) {

// здесь код опущен

}

 

Пометив инструкцию, мы даем ей имя, по которому на нее можно ссылаться из любого места программы. Пометить можно любую инструкцию, хотя обычно по_ мечаются только циклы while, do/while, for и for/in. Дав циклу имя, можно по_ средством инструкций break и continue выходить из цикла или из отдельной ите_ рации цикла.

 



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


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


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

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

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


 


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

 
 

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

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