Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Сценарии JavaScript в активных страницах Web

© Александр Фролов, Григорий Фролов
Том 34, М.: Диалог-МИФИ, 1998, 288 стр.

[Назад] [Содеожание] [Дальше]

Переменные в JavaScript

В сценариях JavaScript вы можете использовать переменные, адресуясь к ним по имени. Переменные могут быть как глобальные, так и локальные. Глобальные переменные доступны из любого места сценария. Область действия локальных переменных ограничивается функцией, внутри которой эти переменные объявлены.

Так же как и в языке программирования Basic, при составлении сценариев JavaScript вы можете использовать переменные без их предварительного объявления. Исключение из этого правила - локальные переменные, определенные в функциях.

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

Объявление переменных

Все переменные в JavaScript объявляются с помощью ключевого слова var, как это показано ниже:


var szHelloMsg;

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

Ниже мы записываем в переменную, которая не была предварительно объявлена, текстовую строку:


szMsg = "Привет!";

После такого присвоения имя переменной szMsg становится доступным.

При выборе имен переменных вы должны придерживаться следующих простых правил:

·       имя переменной должно начинаться с буквы или с символов “_”, “$” и может состоять только из букв, цифр, а также символов “_”, “$”;

·       имя переменной не должно совпадать с зарезервированными ключевыми словами JavaScript.

Список зарезервированных ключевых слов JavaScript приведен ниже:

break

if

case*

import*

catch*

in

class*

new

const*

null

continue

return

debugger*

super*

default*

switch*

delete

this

do*

throw*

else

true*

enum*

try

export*

typeof

extends*

var 

false

void

finally*

while

for

with

function

Ключевые слова, представленные в этом списке, еще только планируется применять в языке JavaScript при его развитии. Эти слова отмечены символом *. Мы рекомендуем избегать их использования в ваших программах в качестве имен переменных.

Нужно также следить, чтобы имена переменных не совпадали с именами встроенных объектов, методов и функций.

Присвоение значения переменным

Вы можете присвоить значение переменной при помощи оператора присвоения “=”. Например, ниже мы объявляем переменную и затем записываем в нее текстовую строку:


var szHelloMsg;
szHelloMsg = "Hello, world!";

В любом месте программы мы можем присвоить переменной szHelloMsg численное значение, например, так:


szHelloMsg = 4;

После выполнения такой операции тип переменной изменится, причем в процессе интерпретации сценария браузер не отобразит никаких предупреждающих сообщений.

Вы можете присвоить переменной специальное значение null:


szHelloMsg = null;

Такое присвоение не назначает переменной никакого типа. Оно применяется в тех случаях, когда вам нужно объявить переменную и проинициализировать ее, не присваивая этой переменной никакого начального значения и типа. В частности, в только что приведенном примере переменной szHelloMsg не присваивается ни численное значение 0, ни пустая текстовая строка.

Типы данных

Хотя при создании переменной вы не можете присвоить ей тип, в языке JavaScript все же существует несколько типов данных. Это числа, текстовые строки, логические данные, объекты, данные неопределенного типа, а также специальный тип null. Объекты мы рассмотрим позже, а сейчас расскажем об основных типах данных.

Числа

Язык сценариев JavaScript допускает использование чисел в различных форматах. Это целые числа, числа в формате с плавающей десятичной точкой и числа в научной нотации. Целые числа могут быть представлены по основанию 8, 10 или 16. Например:

Пример

Описание

25

Целое число по основанию 10

0137

Целое число по основанию 8

0xFF

Целое число по основанию 16

386.7

Число с плавающей десятичной точкой

25e5 или 25E5

Число в научной нотации, равно 2500000

В некоторых случаях арифметические функции могут возвращать так называемое “нечисло”, которое называется в 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 + "&nbsp;- число четыре" + "<BR>";
      szBuf2 = (parseInt("2") + 2) + "&nbsp;- число четыре" + "<BR>";
      document.write(szTextBuf + szBuf2);
    // -->
    </SCRIPT>
    </TABLE>
  </BODY>
</HTML>

Здесь мы объявили переменную szTextBuf и проинициализировали ее пустой строкой. Далее мы присвоили этой строке сумму числа 4 и двух текстовых строк:


szTextBuf = 4 + "&nbsp;- число четыре" + "<BR>";

При вычислении этого выражения значение 4 было автоматически преобразовано в текстовую строку. Дальнейшее суммирование выполнялось как слияние (конкатенация) трех текстовых строк.

Обратите внимание на символ неразделяющего пробела &nbsp;, который используется в документах HTML. Если заменить его на обычный пробел, то после конкатенации строк этот пробел исчезнет.

В следующей строке мы преобразовываем текстовую строку “2” в численное значение с помощью функции parseInt, прибавляем к результату преобразования число 2, а затем выполняем конкатенацию с двумя текстовыми строками:


szBuf2 = (parseInt("2")+2)+"&nbsp;- число четыре"+ "<BR>";

В результате переменная szBuf2 будет содержать ту же самую строку, что и переменная szTextBuf, в чем нетрудно убедиться, взглянув на рис. 1.8.

Рис. 1.8. Результат работы сценария, представленного в листинге 1.9

Здесь в окне браузера отображаются две одинаковые строки, хотя они были получены разными способами.

[Назад] [Содеожание] [Дальше]