Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы / Lab7 / ИТСлаб7.doc
Скачиваний:
26
Добавлен:
16.04.2013
Размер:
489.47 Кб
Скачать

2. Краткие сведения о языке JavaScript

Язык JavaScript базируется на синтаксисе языка C++. Но при написании java-скриптов не требуется писать функцию main (winmain). Также в JavaScript не указываются типы вводимых переменных. В остальном JavaScript и C++ схожи. То есть, переменные могут быть как локальные, так и глобальные. Допускаются вложенные функции, определяемые в телах других функций. Разрешено определение новых классов. Также в JavaScript допустимо опускать символ ";" везде, кроме определения цикла for.

В языке JavaScript, как и в любом другом языке программирования, введён ряд понятий, определяющих попутно его синтаксис.

2.1. Типы данных

  • числа например, 42,3.14159, -1.2345E-67

  • логические (булевы) trueилиfalse

  • строки например, "Howdy!", 'Howdy!'

  • пустой указатель null

Этих типов вполне достаточно для описания данных любого рода. Дело в том, что числа не различаются по классу (натуральные, целые или вещественные) или по размерности (8-, 16-, 32-, 64-разрядные) как в других языках программирования. В JavaScript не делается различия между целыми и вещественными числами, что позволяет работать с целыми числами до приблизительно 1.79769e+308 (что соответствует типу double в языке С). Но при работе с большими числами следует помнить, что некоторые операторы (например, операторы сдвига) работают только с младшими 32 битами числа, "отсекая" старшие разряды (1.79769e+308 >> 1 == 0).

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

var value // Определение переменной. "var" - ключевое слово

value=12; // Присваивание переменной числового значения

value="Text" // Преобразование числовой переменной в строковую

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

2.2. Литералы

Литералы – literally, то есть "буквально" – способ, которым вJavaScriptпредставляются константы.

Примеры литералов:

12 – 10-ичное целое число;

014 – 8-ичное число;

0xC, 0XC, 0xc, 0Xc– 16-ичные числа;

3.14 – вещественное число;

314e-2, 314E-2 – вещественные числа в экпоненциальной форме;

true, false – логические константы;

"Text\"\b\f\n\r\t" – строка (\"-выходстроки - кавычки,\b- возврат на один символ,\f- перевод страницы,\n- перевод строки,\r- возврат каретки,\t- табуляция);

'"Text"'– строка (двойные кавычки воспринимаются браузером как символы, являющиеся частью строки, ограниченной одинарными кавычками).

2.3. Операторы

Язык JavaScriptподдерживает (с некоторыми отличиями) почти все операторы языкаC++, включая оператор условия (? :), и исключая лишь оператор (do while). Однако слово "do" зарезервировано, так же как и другие ключевые слова языкаC++. ТакжеJavaScriptимеет несколько собственных операторов. Ниже описаны отличия операторовJavaScriptот операторовC++.

>>– сдвиг вправо с заполнением старших разрядом значением старшего разряда (-9 >> 2 == 11111111 11111111 11111111 11110111 >> 2 == 11111111 11111111 11111111 11111101 == -3).

>>>– сдвиг вправо с заполнением старших разрядов нулями (-9 >>> 2 == 11111111 11111111 11111111 11110111 >>> 2 == 00111111 11111111 11111111 11111101 == 1073741821).

+ – сложение чисел или конкатенация строк ("Hello" + ", " + "world" + "!" == "Hello,world!")

+= – сложение чисел или конкатенация строк (x+=y<=> x = x+y).

for in– цикл с поочерёдным присваиванием переменной свойств объекта. Формат:for ( var attrib in obj ) { /*операторы*/ } Например, следующий оператор печатает значения свойств объектаCar, имеющегосвойстваMakeиModel.for (var i in Car) { window.document.write("Car."+i+" = "+Car[i]+"<BR>"); } В результате в окне браузера будет выведен, например, такой текст: "Car.Make=FordCar.Model=Mustang", соответствующий сформированной скриптом частиhtml-документа.

with – оператор аналогичный операторуwithв языкеPascal. Формат:with (obj) { /*операторы*/ } Внутри блокаwithвсе обращения к атрибутам объекта выполняются без указания имени объекта. Например, операторwith (Car) { Model = "Mustang" }равносилен операторуCar.Model = Mustang.

При вычислении выражений cо строками можно получить неожиданный результат.InternetExplorerвычисляет выражения по следующим правилам:

var a="1"

var b=3

var c=a+b // с == "13"

var d=b+a // d == "31"

var e=a-b // e == -2

var f=b-a // f == 2