Назад     Вперёд

Ядро JavaScript 1.5. Справочник.


  Глава 3  Операторы

В этой главе рассматриваются все операторы JavaScript.
Оператор JavaScript состоит из ключевого слова, используемого с соответствующим синтаксисом.
Один оператор может занимать несколько строк. несколько операторов могут занимать одну строку, отделённые один от другого знаком "точка с запятой".

 

Соглашения по синтаксису: все ключевые слова показаны жирным шрифтом. Слова шрифта italic представляют определяемые пользователем имена или операции. Части в квадратных скобках [ ] являются необязательными.
{statements} это блок операторов, который может состоять из 0 или более операторов и заключён в фигурные скобки { }.

 

В таблице перечислены операторы JavaScript.


Таблица 3.1    Операторы JavaScript

break

Прерывает текущий цикл while или for и передаёт управление следующему после цикла оператору.

const

Объявляет глобальную константу, инициализируя её (по выбору/optionally) значением.

continue

Прерывает выполнение блока операторов в цикле while или for и начинает выполнение следующей итерации цикла.

do...while

Выполняет операторы, пока тестовое условие не станет false. Операторы выполняются как минимум один раз.

export

Даёт возможность обозначенному/signed скрипту предоставлять свойства, функции и объекты другим обозначенным или необозначенным/unsigned скриптам.

for

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

for...in

Итерирует специфицированную переменную по всем свойствам объекта. Для каждого отдельного свойства JavaScript выполняет специфицированные операторы.

function

Объявляет функцию со специфицированными параметрами. В качестве параметров могут быть строки, числа и объекты.

if...else

Выполняет набор операторов, если специфицированное условие true. Если условие false, может быть выполнен другой набор операторов.

import

Позволяет скрипту импортировать свойства, функции и объекты из обозначенного/signed скрипта, который экспортирует информацию.

label

Идентификатор, который может использоваться совместно с break или continue для указания на точку продолжения выполнения программы.

return

Специфицирует значение, возвращаемое функцией.

switch

Даёт возможность программе вычислять выражение и искать совпадение значения выражения с меткой case.

throw

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

try...catch

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

var

Объявляет переменную, инициализируя её, по выбору, значением.

while

Создаёт цикл, который вычисляет выражение, и, если оно true, выполняет блок операторов. Затем цикл повторяется до тех пор, пока специфицированное условие true.

with

Устанавливает объект по умолчанию для набора выполняемых операторов.



break



Оператор break используется для прерывания выполнения операторов цикла, switch или label.

Прерывает выполнение операторов цикла, switch или label и передаёт управление оператору, следующему после прерванного цикла.

 

Реализован в

JavaScript 1.0, NES 2.0

Версия ECMA

ECMA-262 (для непомеченной/unlabeled версии)
ECMA-262, Edition 3 (для помеченной/labeled версии)


Синтаксис

break [label]


Параметр

label

Идентификатор, ассоциированный с меткой оператора.


Описание

Оператор break содержит необязательный лэйбл/label, который позволяет программе прерывать помеченный оператор. Операторы в помеченном операторе могут быть любого типа.


Примеры

В этой функции имеется оператор break, прерывающий выполнение цикла while, если e равно 3, и возвращающий затем значение 3 * x.

 

function testBreak(x) {
   var i = 0;
   while (i < 6) {
      if (i == 3)
         break;
      i++;
   }
   return i*x;
}


См. также

continue, label, switch.



const



Объявляет именованную константу только-для-чтения.

Реализован в

JavaScript 1.5, NES 6.0 (расширение Netscape, только C-машина).


Синтаксис

const constname [= value] [..., constname [= value] ]


Параметры
varname

Имя константы. Оно может быть любым разрешённым идентификатором.

value

Значение константы. Оно может быть любым разрешённым  выражением.


Описание

Создаёт константу, которая может быть глобальной или локальной по отношению к функции, в которой объявляется. Константы следуют тем же правилам области видимости, что и переменные.

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

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


Примеры

Скрипт:
 

const a = 7;

document.writeln("a равно " + a + ".");
 

даёт на выходе:
 

a равно 7.



continue



Рестарт оператора while, do-while, for, или label.

Реализован в

JavaScript 1.0, NES 2.0

Версия ECMA

ECMA-262 (для непомеченной/unlabeled версии)
ECMA-262, Edition 3 (для помеченной/labeled версии)


Синтаксис

continue [label]


Параметр
label

Идентификатор, ассоциированный с меткой оператора.


Описание

По контрасту с оператором break, continue не прерывает полностью выполнение оператора. Вместо этого он:

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


Примеры

 

Пример 1.

Это цикл while, с оператором continue, выполняемым, если i имеет значение 3. Таким образом, n принимает значения 1, 3, 7 и 12.

i = 0;
n = 0;
while (i < 5) {
   i++;
   if (i == 3)
      continue;
   n += i;
}

 

Пример 2.

С это примере оператор, помеченный checkiandj, содержит оператор, помеченный checkj. Если обнаружен continue, программа продолжает от  верхней точки оператора checkj. Каждый раз при обнаружении continue, checkj повторяет итерацию, пока условие не вернёт false. Если false возвращено, выполняется оставшаяся часть оператора checkiandj. checkiandj повторяет итерацию, пока условие не вернёт false. Если false возвращено, программа продолжает выполняться с точки после оператора checkiandj.

Если continue имеет метку из checkiandj, программа будет продолжать выполняться от  верхней точки оператора checkiandj.

checkiandj :
while (i<4) {
   document.write(i + "<BR>");
   i+=1;

   checkj :
   while (j>4) {
      document.write(j + "<BR>");
      j-=1;
      if ((j%2)==0)
         continue checkj;
      document.write(j + " is odd.<BR>");
   }
   document.write("i = " + i + "<br>");
   document.write("j = " + j + "<br>");
}


См. также

break, label.



do...while



Выполняет специфицированные операторы, пока при тестировании условия не будет возвращено false. Операторы выполняются как минимум однократно.

Реализован в

JavaScript 1.2, NES 3.0

Версия ECMA

ECMA 262, Edition 3


Синтаксис

do
   statements
while (condition);


Параметры
statements

Блок операторов который выполняется минимум один раз и выполняется повторно до тех пор, пока проверка условия возвращает true.

condition

Вычисляется после каждого прохождения цикла. Если условие вычисляется в true, операторы предыдущего блока выполняются повторно. Если проверка условия возвращает false, управление передаётся оператору, следующему после do while.


Примеры

Цикл do loop итерирует минимум один раз и повторяет итерации, пока i не меньше 5.

do {
   i+=1;
   document.write(i);
while (i<5);



export



Позволяет обозначенному/signed скрипту предоставлять свойства, функции и объекты другим обозначенным или необозначенным/unsigned скриптам.

Эта возможность отсутствует в ECMA 262, Edition 3.

Реализован в

JavaScript 1.2, NES 3.0


Синтаксис

export name1, name2, ..., nameN
export *


Параметры
nameN

Список экспортируемых свойств, функций и объектов.

*

Экспортируются все свойства, функции и объекты этого скрипта.


Описание

Обычно информация в обозначенном/signed скрипте доступна только скриптам, обозначенным теми же принципалами/principals (найду перевод поточнее - заменю прим перев.). Экспортируя свойства, функции или объекты, обозначенный скрипт делает эту информацию доступной любому скрипту (signed или unsigned). Получающий скрипт использует оператор import для доступа к информации.


См. также

import.



for



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

Реализован в

JavaScript 1.0, NES 2.0

Версия ECMA

ECMA-262


Синтаксис

for ([initial-expression]; [condition]; [increment-expression]) {
   statements
}


Параметры
initial-expression

Оператор или объявление переменной. Обычно используется для инициализации переменной счётчика цикла. Это выражение может объявлять новую переменную с помощью ключевого слова var. Эти переменные являются локальными относительно функции, а не цикла.

condition

Условие, вычисляемое при каждой итерации цикла. Если вычисляется в true, выполняются операторы statements. Эта проверка условия не является обязательной. При её отсутствии, условие всегда вычисляется в true.

increment-expression

Это выражение обычно используется для инкремента или обновления переменной счётчика цикла.

statements

Блок операторов, которые выполняются, пока условие true. Это может быть один или несколько операторов. Хотя это и не требуется, хорошим стилем будет выделить эти операторы отступом относительно начала оператора for.


Примеры

Здесь оператор for начинается с объявления переменной i и её инициализации в 0. Он проверяет, что i меньше 9, выполняет два последующих оператора и увеличивает i на 1 после каждого прохода по циклу.

for (var i = 0; i < 9; i++) {
   n += i;
   myfunc(n);
}



for...in



Итерирует специфицированную переменную по всем свойствам объекта. Для каждого выделенного свойства JavaScript выполняет специфицированные операторы.

Реализован в

JavaScript 1.0, NES 2.0

Версия ECMA

ECMA-262


Синтаксис

for (variable in object) {
   statements
}


Параметры
variable

Переменная для итерации по каждому свойству, может быть объявлена ключевым словом var. Эта переменная локальна относительно функции, а не цикла.

object

Объект, по свойствам которого происходит итерация.

statements

Специфицирует операторы, выполняемые для каждого свойства.


Примеры

Здесь функция принимает в качестве аргументов объект и имя объекта . Затем выполняется итерация по всем свойствам объекта и возвращает строку со списком имён свойств и их значений.

 

function show_props(obj, objName) {
   var result = "";
   for (var i in obj) {
      result += objName + "." + i + " = " + obj[i] + "\n";
   }
   return result;
}



function



Объявляет функцию со специфицированными параметрами. В качестве параметров принимаются строки, числа и объекты.

Реализован в

JavaScript 1.0, NES 2.0

JavaScript 1.5, NES 6.0: добавлено объявление условной функции (расширение Netscape).

Версия ECMA

ECMA-262


Синтаксис

function name([param] [, param] [..., param]) {
   statements
}

Вы можете также определять функции с помощью конструктора Function и оператора function; см. Function и function.


Параметры
name

Имя функции.

param

Имя аргумента, передаваемого функции. Функция может иметь не более 255 аргументов.

statements

Операторы, образующие тело функции.


Описание

Чтобы возвращать значение, функция обязана иметь оператор return, который специфицирует возвращаемое значение.

 

Функция, созданная с помощью оператора function, является объектом Function и содержит все свойства, методы и поведение объектов Function. См. в  Function детальную информацию о функциях.

 

Netscape поддерживает условное объявление функций, когда функция может быть объявлена на базе вычисления некоторого условия. Если условие true, функция объявляется. Иначе - не объявляется.

 

Функция может быть также объявлена внутри выражения. В этом случае функция обычно анонимна. См...


Примеры

Этот код объявляет функцию, которая возвращает общую сумму от продаж в долларах, если задано количество проданных единиц продуктов a, b и c.

 

function calc_sales(units_a, units_b, units_c) {
   return units_a*79 + units_b*129 + units_c*699
}

 

В следующем скрипте функция one всегда объявляется. Функция zero объявляется, поскольку 'if(1)' вычисляется в true:

 

<SCRIPT language="JavaScript1.5">
<!--
function one()
   document.writeln("This is one.");
   if (1)
      function zero()
      {
         document.writeln("This is zero.");
      }
}
</SCRIPT>

 

Однако, если скрипт изменяется таким образом, что условие становится 'if (0)', функция zero не объявляется и не может быть вызвана.


См. также

Function, function.



if...else



Выполняет набор операторов, если специфицированное условие true. Если условие false, может быть выполнен другой набор операторов.

Реализован в

JavaScript 1.0, NES 2.0

Версия ECMA

ECMA-262


Синтаксис

if (condition) {
   statements1
}
[else {
   statements2
}]

 

Параметры
condition

Условие. Может быть любым выражением JavaScript, которое вычисляется в true или false. Должно быть заключено в скобки. Если true, выполняются операторы statements1.

statements1,
statements2

Любые операторы JavaScript, включая вложенные if. Несколько операторов обязаны быть заключены в фигурные скобки.


Описание

Вы не должны использовать операции присвоения в условном операторе. Например, не используйте такой код:

 

if(x = y)
{
   /* делайте правильно */
}

 

Если Вам необходимо использовать присвоение в условном операторе, добавьте дополнительные скобки вокруг операции присвоения. Например, if( (x = y) ).


Примеры

if (cipher_char == from_char) {
   result = result + to_char
   x++}
else
   result = result + clear_char



import



Даёт возможность скриптам импортировать свойства, функции и объекты из обозначенного/signed скрипта, экспортирующего информацию.

Эта возможность отсутствует в ECMA 262, Edition 3.

Реализован в

JavaScript 1.2, NES 3.0


Синтаксис

import objectName.name1, objectName.name2, ..., objectName.nameN
import objectName.*


Параметры
objectName

Имя объекта, который будет получать импортируемые имена.

name1,
name2,
nameN

Список импортируемых из файла экспорта свойств, функций и объектов .

*

Импортируются все свойства, функции и объекты их экспортирующего скрипта.


Описание

Параметр objectName это имя объекта, который будет получать импортируемые имена. Например, если f и p экспортируются и если obj это объект импортирующего скрипта, следующий код делает f и p доступными в импортирующем скрипте как свойства объекта obj.

 

import obj.f, obj.p

 

Обычно информация в обозначенном/signed скрипте доступна только скриптам, обозначенным теми же принципалами/principals. Экспортируя (используя оператор export) свойства, функции и объекты, обозначенный скрипт делает эту информацию доступной любому скрипту (signed или unsigned). Импортирующий скрипт использует оператор import для доступа к этой информации.

 

Скрипт обязан загрузить экспортирующий скрипт в окно, фрэйм или слой/layer, прежде чем сможет импортировать и использовать любые экспортируемые свойства, функции и объекты.


См. также

export.



label



Предоставляет оператор с идентификатором,  позволяющим ссылаться на этот оператор из break или continue.

Реализован в

JavaScript 1.2, NES 3.0

Версия ECMA

ECMA 262, Edition 3


Например, Вы можете использовать метку для идентификации цикла, а затем использовать операторы break или continue для прерывания или продолжения выполнения цикла.


Синтаксис

label :
   statement

 

Параметр
label

Любой идентификатор JavaScript, кроме зарезервированного слова.

statement

Операторы. break может использоваться с любым помеченным оператором, а continue может использоваться с помеченными операторами цикла.


Примеры

Пример помеченного оператора, использующего break, см. в break. Пример помеченного оператора, использующего continue, см. в continue.


См. также

break, continue.



return



Специфицирует значение, возвращаемое функцией.

Реализован в

JavaScript 1.0, NES 2.0

Версия ECMA

ECMA-262


Синтаксис

return expression;


Параметры
expression

Возвращаемое выражение.


Примеры

Следующая функция возвращает квадрат своего аргумента x, где x это число.

function square(x) {
   return x * x;
}



switch



Позволяет программе вычислять выражение и попытаться сопоставить его значение с меткой case.

Реализован в

JavaScript 1.2, NES 3.0

Версия ECMA

ECMA-262, Edition 3


Синтаксис

switch (expression){
   case label :
      statements;
      break;
   case label :
      statements;
      break;
   ...
   default : statements;
}

 


Параметры
expression

Значение, сопоставляемое с label.

label

Идентификатор, используемый при сопоставлении с expression.

statements

Блок операторов, выполняемый однократно при совпадении expression с label.


Описание

Если совпадение найдено, программа выполняет ассоциированный оператор. Если несколько case совпадают с предоставленным значением, выбирается первый совпавший case, даже если все эти case не равны один другому.

 

Программа сначала ищет метку/label, совпадающую со значением expression/выражения, а затем выполняет ассоциированный оператор. Если ни один лэйбл не совпал, программа ищет необязательный оператор default  и, если он найден, выполняет ассоциированный оператор. Если оператор default не найден, программа продолжает выполняться с оператора после конца блока switch.

 

Необязательный оператор break, ассоциированный с каждой меткой case, гарантирует что прервёт выполнение блока switch, после того как совпадающий оператор будет выполнен, и продолжит выполнение с оператора, идущего после блока switch. Если break опущен, программа продолжает выполнение с оператора, следующего после оператора switch.


Примеры

 

Если expression вычисляется до "Bananas", программа ищет совпадение этого значения с case "Bananas" и выполняет ассоциированный оператор. Если обнаружен break, программа прерывает выполнение блока switch и выполняет оператор, идущий после switch. Если break отсутствует, оператор для case "Cherries" также будет выполнен.

 

switch (i) {
   case "Oranges" :
      document.write("Oranges are $0.59 a pound.<BR>");
      break;
   case "Apples" :
      document.write("Apples are $0.32 a pound.<BR>");
      break;
   case "Bananas" :
      document.write("Bananas are $0.48 a pound.<BR>");
      break;
   case "Cherries" :
      document.write("Cherries are $3.00 a pound.<BR>");
      break;
   default :
      document.write("Sorry, we are out of " + i + ".<BR>");
}
document.write("Is there anything else you'd like?<BR>");



throw



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

Реализован в

JavaScript 1.4

Версия ECMA

ECMA-262, Edition 3


Синтаксис

throw expression;


Параметры
expression

Значение для throw.


Описание

Использование оператора throw для вызова исключения. Если вы вызываете исключение, оно специфицирует значение для исключения. Вот вызовы нескольких исключений.

 

throw "Error2";    // генерирует исключение со строковым значением
throw 42;          // генерирует исключение с числовым значением 42
throw true;        // генерирует исключение со значением true


Примеры

 

Пример 1: Отлов объекта.

При отлове исключения Вы можете специфицировать объект. Затем Вы можете обращаться к свойствам объекта в блоке catch. В этом примере создаётся объект myUserException типа UserException, и он используется в операторе throw.

 

function UserException (message) {
   this.message=message;
   this.name="UserException";
}
function getMonthName (mo) {
   mo=mo-1; // Уточняет число month относительно индекса массива (1=Jan, 12=Dec)
   var months=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul",
      "Aug","Sep","Oct","Nov","Dec");
   if (months[mo] != null) {
      return months[mo];
   } else {
      myUserException=new UserException("InvalidMonthNo");
      throw myUserException;
   }
}

try {
   // операторы для try;
   monthName=getMonthName(myMonth)
}
catch (e) {
   monthName="unknown";
   logMyErrors(e.message,e.name); // передаёт объект исключения обработчику ошибок
}

 

Пример 2: Отлов объекта.

Здесь тестируется строка для ввода zip-кода США. Если zip-код использует неверный формат, оператор throw вызывает исключение, создавая объект типа ZipCodeFormatException.

 

/*
 * Создаётся объект ZipCode.
 *
 * Принимаемые форматы zip-кода:
 *    12345
 *    12345-6789
 *    123456789
 *    12345 6789
 *
 * Если аргумент, передаваемый ZipCode-конструктору, не соответствует
 * одному из этих патэрнов, вызывается исключение.
 */

function ZipCode(zip) {
   zip = new String(zip);
   pattern = /[0-9]{5}([- ]?[0-9]{4})?/;
   if (pattern.test(zip)) {
      // значением zip-кода будет первое найденное совпадение в строке
      this.value = zip.match(pattern)[0];
      this.valueOf = function (){return this.value};
      this.toString = function (){return String(this.value)};
   } else {
      throw new ZipCodeFormatException(zip);
   }
}

function ZipCodeFormatException(value) {
   this.value = value;
   this.message =
      "does not conform to the expected format for a zip code";
   this.toString =
      function (){return this.value + this.message};
}

/*
 * Эти строки могут находиться в скрипте, проверяющем данные адреса
 * для адресов США.
 */

var ZIPCODE_INVALID = -1;
var ZIPCODE_UNKNOWN_ERROR = -2;

function verifyZipCode(z) {
   try {
      z = new ZipCode(z);
   }
   catch (e) {
      if (e instanceof ZipCodeFormatException) {
         return ZIPCODE_INVALID;
      }
      else {
         return ZIPCODE_UNKNOWN_ERROR;
      }
   }
   return z;
}

a=verifyZipCode(95060);         // возвращает 95060
b=verifyZipCode(9560;)          // возвращает -1
c=verifyZipCode("a");           // возвращает -1
d=verifyZipCode("95060");       // возвращает 95060
e=verifyZipCode("95060 1234");  // возвращает 95060 1234

 

Пример 3: Повторный вызов исключения.

Вы можете использовать throw для повторного вызова исключения после его отлова. Следующий пример отлавливает исключение с числовым значением и вызывает его повторно, если его значение больше 50. Повторно вызванное исключение передаётся в содержащую функцию, или на верхний уровень так, чтобы пользователь увидел его.

 

try {
   throw n // вызывает исключение с числовым значением
}
catch (e) {
   if (e <= 50) {
      // операторы для обработки исключений 1-50
   }
   else {
      // не может обработать это исключение, поэтому вызывает его повторно
      throw e
   }
}


См. также

try...catch



try...catch



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

Реализован в

JavaScript 1.4

JavaScript 1.5, NES 6.0: добавлены множественные блоки catch (расширение Netscape).

Версия ECMA

ECMA-262, Edition 3


Синтаксис

try {
   statements
}
[catch (exception_var if expression)
   {statements}] . . .
[catch (exception_var) {statements}]
[finally {statements}]

 


Параметры
statements

Блок операторов, выполняемый однократно. Операторы могут быть декларативными (как var) или исполняемыми (как for).

catch

Блок операторов, выполняемый при вызове исключения в блоке try.

exception_var

Идентификатор объекта исключения.

expression

Выражение для тестирования.

finally

Блок операторов, выполняемый до завершения оператора try...catch. Это блок операторов выполняется независимо от того, было ли исключение отловлено или вызвано.


Описание

Оператор try...catch состоит из блока try, который содержит один или более операторов, и одного или более блоков catch, который содержит операторы, специфицирующие поведение при вызове исключения в блоке try. То есть, Вы можете продолжить блок try и, если это потерпит неудачу, передать управление в блок catch. Если любой оператор в блоке try (или в функции, вызываемой из блока try) вызывает исключение, управление немедленно передаётся блоку catch. Если исключение в блоке try не было вызвано, блок catch пропускается. Блок finally выполняется после выполнения блоков tru и catch, но до операторов, идущих после оператора try...catch.

Можно вкладывать друг в друга один или более операторов try...catch. Если внутренний оператор try...catch не имеет блока catch, выполняется вход в содержащий ("внешний") блок catch оператора try...catch.

Вы можете также использовать оператор try...catch для обработки исключений Java. См. в книге "Ядро JavaScript. Руководство по Использованию" информацию об исключениях Java.

 

Безусловный блок catch.

Если используется единственный безусловный блок catch, то вход в блок catch выполняется при вызове исключения. Например, это код вызывает исключение. Если исключение возникает, управление передаётся в блок catch.

 

try {
   throw "myException" // генерирует исключение
}
catch (e) {
   // операторы для обработки любого исключения
   logMyErrors(e) // объект исключения передаётся обработчику ошибок
}

 

Условные блоки catch.

Вы можете использовать один или несколько блоков catch для обработки специфических исключений. В этом случае вход в нужный блок catch выполняется при вызове специфицированного исключения. В следующем примере блок try может потенциально вызвать три исключения: TypeError, RangeError и EvalError. Если исключение возникает, управление передаётся в соответствующий блок catch. Если исключение не является одним из специфицированных, управление переходит к безусловному блоку catch в конце. Если Вы используете безусловный блок catch с одним или более условных блоков catch, безусловный блок catch обязан быть специфицированным в конце.

 

try {
   myroutine(); // может вызывать три исключения
}
catch (e if e instanceof TypeError) {
   // операторы для обработки исключений TypeError
}

catch (e if e instanceof RangeError) {
   // операторы для обработки исключений RangeError
}

catch (e if e instanceof EvalError) {
   // операторы для обработки исключений EvalError
}

catch (e){
   // операторы для обработки любого неспецифицированного исключения
   logMyErrors(e) // передаёт объект исключения обработчику исключений
}

 

Идентификатор исключения.

Если исключение вызывается в блоке try, exception_var содержит значение, специфицированное оператором throw; Вы можете использовать этот идентификатор для получения информации о вызванном исключении.
JavaScript создаёт этот идентификатор при входе в блок catch; этот идентификатор существует только в период работы блока catch; после того как блок catch завершает выполнение, идентификатор становится недоступным.

 
Блок finally.

Блок finally содержит операторы, выполняемые после выполнения блоков try и catch, но перед операторами, идущими после оператора try...catch. Блок finally выполняется независимо от того, было ли вызвано исключение. Если исключение вызывается, оператор в блоке finally выполняется даже тогда, когда ни один блок catch не обработал исключение.

Вы можете использовать блок finally для того, чтобы Ваш скрипт "изячно" завершался при возникновении исключения; например, может понадобиться освободить ресурс, задействованный скриптом. В следующем примере файл открывается, и выполняются операторы, использующие этот файл (серверный JavaScript позволяет получить доступ файлам). Если исключение вызывается при открытом файле, блок finally закрывает файл до краха скрипта.

 

openMyFile()
try {
   // связывается ресурс
   writeMyFile(theData)
}
finally {
   closeMyFile() // всегда закрывает ресурс
}


Примеры

См. примеры для throw.


См. также

throw.



var



Объявляет переменную, инициализируя её (по выбору) значением.

Реализован в

JavaScript 1.0, NES 2.0

Версия ECMA

ECMA-262


Синтаксис

var varname [= value] [..., varname [= value] ]


Параметры
varname

Имя переменной. Любой верный идентификатор.

value

Начальное значение переменной, может быть любым верным выражением.


Описание

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

 

Использование var вне функции не обязательно, но рекомендуется; Вы можете объявить переменную, просто присвоив ей значение. Однако использование var является хорошим стилем и является необходимой в функции в следующих ситуациях:


Примеры

var num_hits = 0, cust_no = 0



while



Создаёт цикл, вычисляющий выражение, и, если оно true, выполняет блок операторов. Затем цикл повторяется, пока специфицированное условие true.

Реализован в

JavaScript 1.0, NES 2.0

Версия ECMA

ECMA-262


Синтаксис

while (condition) {
   statements
}


Параметры
condition

Вычисляется перед началом каждой итерации цикла. Если это условие вычисляется в true, выполняются операторы в следующем блоке. Если condition вычисляется в false, выполнение продолжается в операторах, следующих после statements.

statements

Блок операторов, выполняемый, пока условие true. Хотя это и не обязательно, желательно выделять эти операторы в коде отступом относительно начала оператора.


Примеры

 

Следующий цикл while итерирует, пока n меньше трёх:

 

n = 0;
x = 0;
while(n < 3) {
   n ++;
   x += n;
}

 

При каждой итерации цикла n увеличивается и прибавляется к  x. Следовательно, x и n принимают следующие значения:

После завершения третьего прохода цикла, условие n < 3 больше не true, поэтому цикл прерывается.



with



Устанавливает объект по умолчанию для набора операторов.

Реализован в

JavaScript 1.0, NES 2.0

Версия ECMA

ECMA-262


Синтаксис

with (object){
   statements
}


Параметры
object

Специфицирует для операторов объект по умолчанию. Скобки вокруг object необходимы.

statements

Блок операторов.


Описание

JavaScript просматривает все неквалифицированные имена в наборе операторов для определения того, являются ли имена свойствами объекта по умолчанию. Если неквалифицированное имя соответствует свойству, это свойство используется в операторе; иначе используется локальная или глобальная переменная.

 

Обратите внимание, что использование оператора with значительно замедлит работу кода. Если скорость работы является критичной, не используйте этот оператор.


Примеры

 

Следующий оператор специфицирует, что объект Math это объект по умолчанию. Операторы в блоке with обращаются к свойству PI и методам cos и sin без специфицирования объекта. JavaScript принимает для этих ссылок объект Math.

var a, x, y
var r=10
with (Math) {
   a = PI * r * r
   x = r * cos(PI)
   y = r * sin(PI/2)
}

 

 

Назад     Вперёд

Copyright © 2000 Netscape Communications Corp. Все права зарезервированы.

Дата последнего обновления: 28 сентября  2000 г.

Hosted by uCoz