Сценарии JavaScript в активных страницах Web© Александр Фролов, Григорий ФроловТом 34, М.: Диалог-МИФИ, 1998, 288 стр. Переменные в JavaScriptВ сценариях JavaScript вы можете использовать переменные, адресуясь к ним по имени. Переменные могут быть как глобальные, так и локальные. Глобальные переменные доступны из любого места сценария. Область действия локальных переменных ограничивается функцией, внутри которой эти переменные объявлены. Так же как и в языке программирования Basic, при составлении сценариев JavaScript вы можете использовать переменные без их предварительного объявления. Исключение из этого правила - локальные переменные, определенные в функциях. Мы рекомендуем объявлять переменные перед их использованием, а также присваивать им начальные значения. Это упростит отладку сценариев и уменьшит вероятность возникновения ошибок при составлении исходного текста, особенно если вы применяете одновременно глобальные и локальные переменные. Объявление переменныхВсе переменные в JavaScript объявляются с помощью ключевого слова var, как это показано ниже: var szHelloMsg; Еще раз обращаем ваше внимание на то, что при объявлении тип переменной не указывается. Этот тип присваивается переменной только тогда, когда ей присваивается какое-либо значение. Ниже мы записываем в переменную, которая не была предварительно объявлена, текстовую строку: szMsg = "Привет!"; После такого присвоения имя переменной szMsg становится доступным. При выборе имен переменных вы должны придерживаться следующих простых правил: · имя переменной должно начинаться с буквы или с символов “_”, “$” и может состоять только из букв, цифр, а также символов “_”, “$”; · имя переменной не должно совпадать с зарезервированными ключевыми словами JavaScript. Список зарезервированных ключевых слов JavaScript приведен ниже:
Ключевые слова, представленные в этом списке, еще только планируется применять в языке JavaScript при его развитии. Эти слова отмечены символом *. Мы рекомендуем избегать их использования в ваших программах в качестве имен переменных. Нужно также следить, чтобы имена переменных не совпадали с именами встроенных объектов, методов и функций. Присвоение значения переменнымВы можете присвоить значение переменной при помощи оператора присвоения “=”. Например, ниже мы объявляем переменную и затем записываем в нее текстовую строку: var szHelloMsg; szHelloMsg = "Hello, world!"; В любом месте программы мы можем присвоить переменной szHelloMsg численное значение, например, так: szHelloMsg = 4; После выполнения такой операции тип переменной изменится, причем в процессе интерпретации сценария браузер не отобразит никаких предупреждающих сообщений. Вы можете присвоить переменной специальное значение null: szHelloMsg = null; Такое присвоение не назначает переменной никакого типа. Оно применяется в тех случаях, когда вам нужно объявить переменную и проинициализировать ее, не присваивая этой переменной никакого начального значения и типа. В частности, в только что приведенном примере переменной szHelloMsg не присваивается ни численное значение 0, ни пустая текстовая строка. Типы данныхХотя при создании переменной вы не можете присвоить ей тип, в языке JavaScript все же существует несколько типов данных. Это числа, текстовые строки, логические данные, объекты, данные неопределенного типа, а также специальный тип null. Объекты мы рассмотрим позже, а сейчас расскажем об основных типах данных. ЧислаЯзык сценариев JavaScript допускает использование чисел в различных форматах. Это целые числа, числа в формате с плавающей десятичной точкой и числа в научной нотации. Целые числа могут быть представлены по основанию 8, 10 или 16. Например:
В некоторых случаях арифметические функции могут возвращать так называемое “нечисло”, которое называется в JavaScript как NaN (Not a Number). “Нечисло” - это специальное значение, которое не соответствует никакому числу. Оно возникает в тех случаях, когда результат выполнения операции над числами не может быть представлен в виде числа. С помощью функции isNaN вы можете проверить, является ли значение “нечислом”. Текстовые строкиТекстовые строки - это последовательность символов Unicode, заключенных в одинарные или двойные кавычки, например: "Hello, world!" "" "12345" 'Это текстовая строка' Строка “” - пустая. Заметим, что следующие два присвоения не эквивалентны: szStr="" szStr1=null В первом случае в переменной szStr хранится текстовая строка (хотя бы и пустая), во втором - совсем ничего. Логические данныеЛогические данные могут иметь только два значения: true и false. Эти значения никак не соотносятся с числами 1 и 0. Они предназначены главным образом для выполнения операций сравнения, а также для использования в условных операторах. Данные неопределенного типаЕсли переменная была объявлена, но ей еще ни разу не присваивалось значение, она имеет неопределенный тип. Например, в следующей строке сценария объявлена переменная MyVariable, которая имеет неопределенный тип: var MyVariable; Если же этой переменной присвоить значение null, то тип переменной изменится - теперь это будет переменная, содержащая значение null: MyVariable = null; Преобразование типов данныхКогда в выражениях встречаются переменные разных типов, интерпретатор JavaScript может автоматически преобразовывать численные данные в текстовые строки. Обратное же преобразование (строк в числа) приходится выполнять с помощью специальных функций, таких как parseInt и parseFloat. Поясним это на примере (листинг 1.9). Листинг 1.9. Файл Conversion/Conversion.html <HTML> <HEAD> <TITLE>Type conversion sample</TITLE> </HEAD> <BODY BGCOLOR=white> <H1>Type conversion sample</H1> <TABLE> <SCRIPT LANGUAGE="JavaScript"> <!-- var szTextBuf = ""; szTextBuf = 4 + " - число четыре" + "<BR>"; szBuf2 = (parseInt("2") + 2) + " - число четыре" + "<BR>"; document.write(szTextBuf + szBuf2); // --> </SCRIPT> </TABLE> </BODY> </HTML> Здесь мы объявили переменную szTextBuf и проинициализировали ее пустой строкой. Далее мы присвоили этой строке сумму числа 4 и двух текстовых строк: szTextBuf = 4 + " - число четыре" + "<BR>"; При вычислении этого выражения значение 4 было автоматически преобразовано в текстовую строку. Дальнейшее суммирование выполнялось как слияние (конкатенация) трех текстовых строк. Обратите внимание на символ неразделяющего пробела , который используется в документах HTML. Если заменить его на обычный пробел, то после конкатенации строк этот пробел исчезнет. В следующей строке мы преобразовываем текстовую строку “2” в численное значение с помощью функции parseInt, прибавляем к результату преобразования число 2, а затем выполняем конкатенацию с двумя текстовыми строками: szBuf2 = (parseInt("2")+2)+" - число четыре"+ "<BR>"; В результате переменная szBuf2 будет содержать ту же самую строку, что и переменная szTextBuf, в чем нетрудно убедиться, взглянув на рис. 1.8. Рис. 1.8. Результат работы сценария, представленного в листинге 1.9 Здесь в окне браузера отображаются две одинаковые строки, хотя они были получены разными способами. |