Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Элементарные и ссылочные типыСодержание книги
Поиск на нашем сайте Главное правило JavaScript заключается в следующем: операции над элементарными типами производятся по значению, а над ссылочными типами, как и следует из их названия, – по ссылке. Числа и логические величины – это элементарные типы в JavaScript. Представителями ссылочных типов являются объекты. Массивы и функции – это специализированные типы объектов и потому также являются ссылочными типами. В примере 3.1 выполняется копирование, передача и сравнение чисел. Поскольку числа являются элементарными типами, данный пример является иллюстрацией операций, выполняемых по значению. Пример 3.1. Копирование, передача и сравнение величин по значению // Первой рассматривается операция копирования по значению var n = 1; // Переменная n хранит значение 1 var m = n; // Копирование по значению: переменная m хранитдругое значение 1 // Данная функция используется для иллюстрации операции передачи величины по значению // Как вы увидите, функция работаетне совсем так,как хотелось бы function add_to_total(total, x) { total = total + x; // Эта строка изменяет лишь внутреннюю копию total } // Теперь производится обращение к функции, которой передаютсяпо значению числа, // содержащиеся в переменныхn и m. Копия значения из переменной n внутри функции // доступна под именем total. Функция складывает копии значений переменных m и n, // записывая результат в копию значения переменной n. Однако это не оказывает // никакого влияния на оригинальное значение переменной n за пределами функции. // Таким образом, в результате вызова этой функции мы не получаем никаких изменений. add_to_total(n, m); // Сейчас мы проверим операцию сравнения по значению. // В следующей строке программы литерал 1 представляет собой совершенно // независимое числовое значение, "зашитое" в текст программы. Мы сравниваем // его со значением, хранящимся в переменной n. В данном случае, чтобы // убедиться в равенстве двух чисел, выполняется их побайтовое сравнение. if (n == 1) m = 2; // n содержит то же значение, что и литерал 1; // таким образом в переменную m будет записано значение 2 Теперь рассмотрим пример 3.2. В этом примере операции копирования, передачи и сравнения выполняются над объектами. Поскольку объекты относятся к ссылочным типам, все действия над ними производятся по ссылке. В данном примере использован объект Date. Пример 3.2. Копирование, передача и сравнение величин по ссылке // Здесь создается объект, который соответствует дате Рождества в 2007 году // Переменная xmas хранит ссылку на объект, а не сам объект var xmas = new Date(2007, 11, 25); // Затем выполняется копирование ссылки, получается втораяссылка на оригинальный объект var solstice = xmas; // Обе переменныессылаются на тот же самый объект // Здесь выполняется изменение объекта с помощью новой ссылки solstice.setDate(21); // Изменения можно наблюдать при использовании первой ссылки xmas.getDate(); // Возвращает 21, а не первоначальное значение 25 // То же происходит при передачеобъектов и массивов в функции. // Следующая функция складывает значения всех элементов массива. // Функции передаетсяссылка на массив, а не копия массива. // Благодаря этому функция может изменять содержимое массива,переданного // по ссылке, и эти изменения будут видны после возврата из функции. function add_to_totals(totals, x) { totals[0] = totals[0] + x; totals[1] = totals[1] + x; totals[2] = totals[2] + x; } // Наконец, далее выполняется операция сравнения по ссылке. // При сравнении двух переменных, созданных ранее, обнаруживается, // что они эквивалентны, поскольку ссылаются на один и тот же объект даже // при том, что производилось изменение даты по одной из них: (xmas == solstice) // Возвращает значение true // Две переменные, созданные позднее, ссылаются на разные объекты, // каждый из которых содержит однуи ту же дату. var xmas = new Date(2007, 11, 25); var solstice_plus_4 = new Date(2007, 11, 25); // Но согласно правилу "сравнения по ссылке" ссылки на разные объекты // не считаются эквивалентными! (xmas!= solstice_plus_4) // Возвращает значение true
Пример 3.3. Ссылки передаются по значению // Здесь приводится другая версия функции add_to_totals(). Хотя она не работает, // потому что вместо изменения самого массива она изменяет ссылку на этот массив. function add_to_totals2(totals, x) { newtotals = new Array(3); newtotals[0] = totals[0] + x; newtotals[1] = totals[1] + x; newtotals[2] = totals[2] + x; totals = newtotals; // Эта строка не оказывает влияния // на массив за пределами функции
Таблица 4.3 По ссылке или по значению: подведение итогов
Типизация переменных Самое важное различие между JavaScriptи такими языками, как Java и C, состоит в том, что JavaScript – это нетипизированный (untyped) язык. В частности, это значит, что JavaScript-переменная может содержать значение любого типа, в отличие от Java- или C-переменной, в которой может содержаться только определенный тип данных, заданный при ее объявлении. Так, в JavaScript можно присвоить переменной число, а затем присвоить той же переменной строку: i = 10; i = "десять";
Объявление переменных Прежде чем использовать переменную в JavaScript, ее необходимо объявить. Переменные объявляются с помощью ключевого слова varследующим образом: var i; var sum; Можно объявить несколько переменных: var i, sum; Кроме того, объявление переменной можно совмещать с ее инициализацией: var message = "hello"; var i = 0, j = 0, k = 0; Если начальное значение не задано в инструкции var, то переменная объявляется, но ее начальное значение остается неопределенным (undefined), пока не будет изменено программой. Обратите внимание, что инструкция varтакже может включаться в циклы for и for/in, что позволяет объявлять переменную цикла непосредственно в самом цикле. Например: for(var i = 0; i < 10; i++) document.write(i, "<br>");
|
||||||||||||||||||||||
|
Последнее изменение этой страницы: 2016-12-28; просмотров: 496; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.214 (0.008 с.) |