Как и любой другой язык программирования, JavaScript поддерживает
При этом все они делятся на встроенные и определяемые программистом. Функции и объекты будут рассмотрены в следующей лекции.
Литералом называют данные, которые используются в программе непосредственно. При этом под данными понимаются числа или строки текста. Все они рассматриваются в JavaScript как элементарные
числовой литерал: 10 числовой литерал: 2.310 числовой литерал: 2.3e+2 строковый литерал: 'Это строковый литерал' строковый литерал: "Это строковый литерал"
Литералы используются в
var a=10; var str = 'Строка'; if(x=='test') alert(x);
Оператор присваивания ( переменная = выражение ) возвращает результат вычисления выражения, поэтому ничто не мешает полученное значение присвоить еще и другой переменной. Таким образом,
result = x = 5+7;
Два варианта строковых литералов необходимы для того, чтобы использовать вложенные строковые литералы. Если в строковом литерале требуется использовать одинарную кавычку, то сам "It's . Верно и обратное. Но если есть необходимость использовать в строковом литерале оба вида кавычек, то проще всего всех их "экранировать" символом обратной косой черты \, при этом саму строку можно заключить в любую пару кавычек. Например:
команда:
document.write("It\'s good to say \"Hello\" to someone!");
выдаст:
It's good to say "Hello" to someone!
Помимо строковых литералов (последовательностей символов, заключенных в кавычки) есть еще строковые var s = new String(). У этого объекта существует много методов (об объектах и методах пойдет речь в следующей лекции). Следует понимать, что строковый
Например, можно сначала присвоить var s='abra-kadabra', а затем применить метод: var m=s., который неявно преобразует строковый s в строковый объект и затем разбивает строку в тех местах, где встречается 'b', возвращая массив строк-кусков: массив m будет состоять из строк 'a', ' и ' (массивы рассматриваются ниже).
var, при этом можно давать или не давать им начальные значения:
var k; var h='Привет!';
Можно объявлять сразу несколько переменных в одном операторе var (тем самым уменьшая размер кода), но тогда их надо писать через запятую. При этом тоже можно давать или не давать начальные значения:
var k, h='Привет!'; var t=37, e=2.71828;
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 внутри {...} никак не связана с одноименной
Примечание. Объявлять переменные можно и без оператора 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 ) будет выведено оператором . Чтобы скрыть переменную 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 - и оператор выдает 5 вместо ожидавшегося 7. Причина в том, что вызов f(3) в качестве "k. Чтобы такого не произошло, нужно перед k=7 поставить var. Тогда переменная k будет локальной и вызов f(3) не сможет ее изменить, так как при вызове функции создаются новые копии всех ее
При написании больших программ подобные ошибки трудно отследить, поэтому настоятельно рекомендуется все переменные объявлять с оператором var, особенно внутри функций.
Массивы делятся на встроенные ( document.links[], document.images[] и т.п. - их еще называют , , и другие, а также свойство length, которое позволяет получить число элементов массива.
Для определения массива пользователя существует специальный конструктор Array. Если ему передается единственный аргумент, причем целое неотрицательное число, то создается незаполненный массив соответствующей длины. Если же передается один аргумент, не являющийся числом, либо более одного аргумента, то создается массив, заполненный этими элементами:
a = new Array(); // пустой массив (длины 0) b = new Array(10); // массив длины 10 c = new Array(10,'Привет'); // массив из двух элементов: числа и строки d = [5, 'Тест', 2.71828, 'Число e']; // краткий способ создать массив из 4 элементов
Элементы массива нумеруются с нуля. Поэтому в последнем примере значение d[0] равно 5, а значение d[1] равно 'Тест'. Как видим, массив может состоять из разнородных элементов. Массивы не могут быть многомерными, однако ничто не мешает завести массив, элементами которого будут тоже массивы.
Метод позволяет объединить элементы массива в одну строку. Он является обратным к методу , который разрезает объект типа String на куски и составляет из них массив. Кстати, метод демонстрирует тот факт, что массив можно получить и без конструктора массива.
Рассмотрим пример преобразования локального URL в глобальный URL, где в качестве адреса сервера будет выступать www.. Пусть в переменной localURL хранится локальный URL некоторого файла:
localURL = "file:///C:/department/internet/js/2/2.html"
Разрежем строку в местах вхождения комбинации символов " :/ ", выполнив команду: b = localURL.. Получим массив:
b[0] = "file"; b[1] = "//C"; b[2] = "department/internet/js/2/2.html";
Заменяем 0-й и 1-й элементы на требуемые:
b[0] = "http:"; b[1] = "/www.intuit.ru";
Наконец, склеиваем полученный массив, вставляя косую черту в местах склейки: globalURL = b.. В итоге мы получаем требуемый глобальный URL - значение globalURL будет равно: http://www..
Метод применяется для изменения порядка элементов массива на противоположный. Предположим, массив упорядочен следующим образом:
a = new Array('мать','видит','дочь');
Упорядочим его в обратном порядке, вызвав метод a.. Тогда новый массив a будет содержать:
a[0]='дочь'; a[1]='видит'; a[2]='мать';
Метод интерпретирует элементы массива как строковые литералы и сортирует массив в алфавитном (т.н. лексикографическом) порядке. Обратите внимание: метод меняет массив. В предыдущем примере, применив a., мы получим на выходе:
a[0]='видит'; a[1]='дочь'; a[2]='мать';
Однако, это неудобно, если требуется отсортировать числа, поскольку согласно алфавитному порядку 40 идет раньше чем 5. Для этих целей у метода имеется необязательный аргумент, являющийся именем функции, согласно которой требуется отсортировать массив, т.е. в этом случае a.. Эта функция должна удовлетворять
Например, если нам требуется сортировать числа, то мы можем описать следующую функцию:
function compar(a,b)
{
if(a < b) return -1;
if(a > b) return 1;
if(a == b) return 0;
}
Теперь, если у нас есть массив b = new Array(10,6,300,25,18);, то можно сравнить результаты сортировки без аргумента и с функцией в качестве аргумента:
document.write("Алфавитный порядок:<BR>");
document.write(b.sort());
document.write("<BR>Числовой порядок:<BR>");
document.write(b.sort(compar));
В результате выполнения этого кода получим следующее:
Алфавитный порядок: 10,18,25,300,6 Числовой порядок: 6,10,18,25,300
Обратите внимание: метод интерпретирует элементы массива как строки (и производит лексикографическую сортировку), но не преобразует их в строки. Если в массиве были числа, то они числами и останутся. В этом легко убедиться, если в конце последнего примера выполнить команду document.write(b[3]+1): результат будет 26 (т.е. 25+1 ), а не 251 (т.е. "25"+"1" ).
В этом разделе будут рассмотрены операторы JavaScript. Основное внимание при этом мы уделим операторам декларирования и
Общий перечень этих операторов выглядит следующим образом (сразу оговоримся, что этот список неполный):
{...}if ... else ...()?whileforbreakcontinue returnif (логическое_выражение) оператор; if (логическое_выражение) оператор_1; else оператор_2;
if (navigator.javaEnabled())
alert('Ваш браузер поддерживает Java');
else
alert('Ваш браузер НЕ поддерживает Java');
Этот оператор, называемый
(логическое_выражение)? значение_1 : значение_2
Если логическое_выражение равно true, то возвращается значение_1, в противном случае значение_2. if...else, однако оно позволяет сделать более компактным и легко воспринимаемым
TheFinalMessage = (k>5)? 'Готово!' : 'Подождите...'; if(k>5) TheFinalMessage = 'Готово!'; else TheFinalMessage = 'Подождите...';
Оператор while задает цикл. Определяется он в общем случае следующим образом:
while (условие_продолжения_цикла) тело_цикла;
Условие_продолжения_цикла является while работает следующим образом:
условие_продолжения_цикла:false ), цикл закончен,true ), то продолжаем далее;тело_цикла ;Такой цикл используется, когда заранее неизвестно количество итераций, например, в ожидании некоторого события. Пример:
var s='';
while (s.length<6)
{
s=prompt('Введите строку длины не менее 6:','');
}
alert('Ваша строка: ' + s + '. Спасибо!');
Оператор for - это еще один
for (инициализация_переменных_цикла;
условие_продолжения_цикла;
модификация_переменных_цикла) тело_цикла;
инициализация_переменных_цикла и модификация_переменных_цикла могут состоять из нескольких простых операторов, в этом случае простые операторы должны быть разделены запятой. Условие_продолжения_цикла является for работает следующим образом:
инициализация_переменных_цикла ;условие_продолжения_цикла:false ), цикл закончен,true ), то продолжаем далее;тело_цикла ;модификация_переменных_цикла ;Рассмотрим типичный пример использования этого оператора:
document.write('Кубы чисел от 1 до 100:');
for (n=1; n<=100; n++)
document.write('<BR>'+n+'<sup>3</sup> = '+ Math.pow(n,3));
Здесь - вычисляет степенную функцию nm. Результат работы скрипта получите самостоятельно.
Оператор break позволяет досрочно покинуть 5000.
document.write('Кубы чисел, меньшие 5000:');
for (n=1; n<=100; n++)
{
s=Math.pow(n,3);
if(s>5000) break;
document.write('<BR>'+n+'<sup>3</sup> = '+s);
}
Несмотря на то, что переменную n мы заставили пробегать от 1 до 100, т.е. заведомо с запасом, реально же цикл выполнится для значений n от 1 до ... получите сами!
Оператор позволяет перейти к следующей итерации цикла, пропустив выполнение всех нижестоящих операторов в теле цикла. Если нам нужно вывести кубы чисел от 1 до 100, превышающие 10 000, то мы можем составить такой цикл:
document.write('Кубы чисел от 1 до 100, большие 10 000:');
for (n=1; n<=100; n++)
{
s=Math.pow(n,3);
if(s <= 10000) continue;
document.write('<BR>'+n+'<sup>3</sup> = '+s);
}
Проверьте самостоятельно, кубы каких чисел будут выведены скриптом. Разумеется, для большей гибкости можно использовать в циклах оба оператора break и .
Оператор return используют для возврата значения из
function sign(n)
{
if (n>0) return 1;
if (n<0) return -1;
return 0;
}
alert( sign(-3) );
Обратите внимание: оператор return не только указывает, какое значение должна вернуть функция, но и прекращает выполнение дальнейших операторов в теле функции.
При использовании в обработчиках событий оператор return позволяет отменить или не отменять действие по умолчанию, которое совершает браузер при возникновении данного события. Отменить его, однако, можно не для всех событий. Рассмотрим пример:
<FORM ACTION="newpage.html" METHOD=post>
<INPUT TYPE=submit VALUE="Отправить?"
onClick="alert('Не отправим!');return false;">
</FORM>
В этом примере без оператора return false пользователь увидел бы окно предупреждения "Не отправим!" и далее был бы перенаправлен на страницу newpage.html. Оператор же return false позволяет отменить отправку формы, и пользователь лишь увидит окно предупреждения.
Аналогично, чтобы отменить действие по умолчанию для параметров событий onClick, onKeyDown, onKeyPress, onMouseDown, onMouseUp, onSubmit, onReset, нужно использовать return false. Для события onMouseOver с этой же целью нужно использовать оператор return true. Для некоторых же событий, например onMouseOut, onLoad, onUnload, отменить действие по умолчанию невозможно.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.