Операторы  

См. подразделы: - (инверсия), - (минус), --, %, &, &&, *, , , /, ?:, ^, |, ||, ~, +, ++, += и подобные, <, <<, <=, !, !=, !==, =, ==, ===, >, >=, >>, >>>, delete, new, typeof, in, instanceof и void.

   

Приоритет Операций

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

Тип Операции Операции
"запятая" ,
присвоение = += -= *= /= %= <<= >>= >>>= &= ^= |=
условная ?:
логическое ИЛИ ||
логическое И &&
побитовое ИЛИ |
побитовое исключающее ИЛИ ^
побитовое И &
равенство == != === !==
соотношение < <= > >= in instanceof
побитовый сдвиг << >> >>>
сложение/вычитание + -
умножение/деление * / %
отрицание/инкремент ! ~ - + ++ -- typeof void delete
вызов/создание экземпляра () new
член . []

+ NN 2  IE J1  ECMA 1

Операция сложения. Этот оператор работает и с числами, со и строками, но его результаты изменяются в зависимости от типов данных его операндов. Когда оба операнда - числа, результат - сумма из этих двух чисел; когда оба операнда - строки, результат - связь из этих двух строк (в порядке операндов); когда один операнд - номер а другой - строка, тип данных номера преобразовывается в строку, и эти две строки связываются. Чтобы преобразовать строковый операнд в число, используйте функцию parseInt() или parseFloat().

 
Пример:

var mySum = number1 + number2 var newString = "string1" + "string2"


+= NN 2  IE J1  ECMA 1

Добавляющий значение оператор. Этот класс операторов объединяет простой оператор присваивания (=) с одним из многих других операторов, чтобы добавить значение правого операнда левому операнду. Например, если переменная - строка, Вы можете добавить в её конец другую строку оператором += :

a += " and some more."

равносильно:

a = a + " and some more"

Применительно ко всем подобным операторам:

Operator

Example

Equivalent

+=

a += b

a = a + b

-=

a -= b

a = a - b

*=

a *= b

a = a * b

/=

a /= b

a = a / b

%=

a %= b

a = a 0

<<=

a <<= b

a = a << b

>>=

a >>= b

a = a >> b

>>>=

a >>>= b

a = a >>> b

&=

a &= b

a = a & b

|=

a |= b

a = a | b

^=

a ^= b

a = a ^ b

 
Пример:

output += "<H1>Section 2</H1>" total *= .95


&& NN 2  IE J1  ECMA 1

Логический оператор AND. Этот оператор проверяет два Boolean выражения на истинность. Если оба выражения true, результат && оператора также true; если или или оба выражения false, выражение с && оператором - также false. Если одно выражение true, а другое false, то выражение с && оператором - также false.

Выражение Boolean может состоять из операции сравнения (использование любого из операторов сравнения) или других операций. Вот - наиболее общие значения типов данных, и их Булев эквивалент:

Тип данных

Булев эквивалент

Число, отличное от нуля

true

Нуль

false

Любая непустая строка

true

Пустая строка

false

Любой объект

true

Нуль

false

Неопределенный

false

Используя эту информацию, Вы можете создавать составные условия со помощью оператора &&. Например, если Вы хотите видеть, ввел ли кто-то значение в поле формы, и это число - большее ли, чем 100, условие было бы такое:

var userEntry = document.forms[0].entry.value if (userEntry && parseInt(userEntry) >= 100) { ... }

Если пользователь не ввел никакого значения, строка пуста. В составном условии, когда первое выражение true, правила оператора && подразумевают, что полное выражение возвращает false (потому что оба операнда должны быть true, чтобы возвратить true). Поскольку оценка выражений типа составного условия производится слева направо, а значение первого выражения возвратит ложь, это будет означать, что второй операнд не оценен.

 
Пример:

if (a <= b && b >= c) { ... }


= NN 2  IE J1  ECMA 1

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

a = b = c = 25

все три переменной станут равны 25.

 
Пример:

var myName = "Theodore Roosevelt" var now = new Date()


& NN 2  IE J1  ECMA 1

Поразрядный оператор AND. Этот оператор выполняет бинарную математику на двух операндах (на их двоичных значениях). Каждый столбец битов подвергается Булевой операции AND. Если значение соответствующего столбца в обоих операндах = 1, результат для этого столбца = 1. Все другие комбинации выдают нуль. Конечное значение оператора - десятичный эквивалент двоичного результата. Например, бинарные значения тройки и шестёрки = 0011 и 0110 соответственно.Схема поразрядного преобразования выражения:

Начальные значения 3
6
Двоичные эквиваленты 0 0 1 1
0 1 1 0
Промежуточное возвращаемое значение (бинарное) 0 0 1 0
Окончательное значение 2

После операции AND на этих значениях бинарный результат = 0010; десятичный эквивалент чего = 2.

 
Пример:

var n = 3 & 6


<< NN 2  IE J1  ECMA 1

Поразрядный оператор сдвига влево. Этот оператор перемещает биты первого операнда на число столбцов, указанных как второй операнд. Например, если бинарное значение десятичной тройки (0011) сдвинули налево на 2 бита, двоичный результат = 1100; десятичный эквивалент чего = 12.

Начальные значения 3
2
Эквиваленты 0 0 1 1
2 бита
Промежуточное возвращаемое значение (бинарное) 1 1 0 0
Окончательное значение 12
 
Пример:

var shifted = 3 << 2


~ NN 2  IE J1  ECMA 1

Поразрядный оператор NOT. Этот унарный оператор инвертирует значение двоичной цифры в каждом столбце бинарного представления числа. Например, бинарное представление 6 = 0110 (с намного большим количеством нулей налево). После операции отрицания на значении каждого столбца, бинарный результат будет 1001 (плюс все нули налево, инвертированные к 1). Десятичный эквивалент - отрицательное значение (-5).

Начальное значение 6
Бинарный эквивалент ...000 1 1 0
Промежуточное возвращаемое значение (бинарное) ...111 0 0 1
Окончательное значение -5
 
Пример:

var n = ~6


| NN 2  IE J1  ECMA 1

Поразрядный оператор OR. Этот оператор выполняет бинарную математику на двух операндах (на их двоичных значениях). Каждый столбец битов подвергается Булевой операции OR. Если значение столбца в обоих операндах = 0, результат для соответствующей позиции столбца = 0. Все другие комбинации выдают 1.Конечное значение оператора - десятичный эквивалент двоичного результата. Например, двоичные значения 3 и 6 = 0011 и 0110 соответственно. После операции AND на этих значениях бинарный результат = 0111; десятичный эквивалент чего = 7

Начальные значения 3
6
Двоичные эквиваленты 0 0 1 1
0 1 1 0
Промежуточное возвращаемое значение (бинарное) 0 1 1 1
Окончательное значение 7
 
Пример:

var n = 3 | 6


>> NN 2  IE J1  ECMA 1

Поразрядный оператор сдвига вправо. Этот оператор перемещает биты первого операнда на число столбцов, указанных вторым операндом. Например, если биты двоичного значения 6 (0110) переместили направо на 2, бинарный результат = 0001; десятичный эквивалент = 1. Любые цифры, которые не умещаются в правый конец числа, отвергаются. Копии самого левого бита вдвигаются слева.

Начальные значения 6
2
Эквиваленты 0 1 1 0
2 бита
Промежуточное возвращаемое значение (бинарное) 0 0 0 1
Окончательное значение 1
 
Пример:

var shifted = 6 >> 2


^ NN 2  IE J1  ECMA 1

Поразрядная противоположность оператору OR (XOR).Этот оператор выполняет бинарную математику на двух операндах (на их двоичных значениях). Каждый столбец битов подвергается Булевой операции XOR. Если значение столбца одного из операндов (но не обоих операндов) = 1, результат для того столбца = 1. Все другие комбинации выдают 0. Окончательное значение оператора - десятичный эквивалент двоичного результата. Например, двоичные значения 3 и 6 = 0011 и 0110 соответственно. После операции XOR бинарный результат = 0101; десятичный эквивалент = 5

Начальные значения 3
6
Двоичные эквиваленты 0 0 1 1
0 1 1 0
Промежуточное возвращаемое значение (бинарное) 0 1 0 1
Окончательное значение 5
 
Пример:

var n = 3 ^ 6


>>> NN 2  IE J1  ECMA 1

Поразрядный заполняющий нулями оператор сдвига вправо. Этот оператор сдвигает (вправо) биты первого операнда на число столбцов, указанных вторым операндом. С оператором >> новые цифры, которые заполняют освобождающиеся столбцы с левого конца - единицы; с оператором >>> новые цифры слева - нули. Любые цифры, которые не умещаются в правый конец числа отвергаются. Microsoft также именует этот оператор как беззнаковый оператор сдвига вправо

 
Пример:

var shifted = 6 >>> 2


, NN 2  IE J1  ECMA 1

Оператор "запятая". Этот оператор может отделять выражения в одной строке сценария. Это может использоваться для разных целей. Например, чтобы объявить несколько переменных, синтаксис был бы:

var varName1, varName2, ... varNameN

Несколько инструкций сценария также могут быть соединены в одной строке. Поэтому, следующая строка сценария:

alert("Howdy"),alert("Doody")

выводит два аварийных диалоговых окна в заданной последовательности (второе появляется после того, как первое убрано пользователем). Другое применение оператора - в циклах for, когда Вы желаете вовлечь в цикл две (или больше) переменные:

for (var i = 0, var j = 2; i < 20; i++, j++) { ... }

 
Пример:

var isNav, isIE


?: NN 2  IE J1  ECMA 1

Условный оператор. Этот оператор представляет собой shortcut синтаксиса управляющей структуры if/else. Для реализации этого оператора есть три компонента : условие и две инструкции. Если условие оценивается к true, выполняется первая из инструкций; если условие оценивает к false, выполняется вторая инструкция. Синтаксис следующий:

condition ? statement1 : statement2

Этот оператор - shortcut только внешне. Он вызывает ту же самую внутреннюю обработку, как и конструкция if...else.

 
Пример:

var newColor = (temp > 100) ? "red" : "blue"


-- NN 2  IE J1  ECMA 1

Оператор декремента. Этот унарный оператор вычитает 1 из текущего значения переменного выражения. Вы можете размещать оператор перед или позади переменной для получения различного эффекта. Когда оператор перед переменной, она декременируется (вычитается единица) прежде, чем возвращается её значение. Например, в следующей последовательности:

var a, b a = 5 b = --a

единица вычитается из a перед присвоением b. Поэтому, когда эти инструкции выполнятся, и b, и a будут равны 4. Напротив, в следующей последовательности:

var a, b a = 5 b = a--

вычитание происходит после присвоения значения a переменной b. Когда эти инструкции закончатся, b = 5 и a = 4.

Это поведение воздействует на счётчик цикла for. Как правило, счетчик цикла срабатывает после всех инструкций. Таким образом, для большинства счетчиков цикла оператор размещается после переменной:

for (var i = 10; i >=0; i--) ...

 
Пример:

--n n--


delete NN 4  IE J3  ECMA 1

Удаляющий оператор. Этот оператор удаляет свойство из объекта (например, свойство prototype экземпляра статического объекта, к которому ваш сценарий добавлял прототип ранее), или элемент созданного в сценарии массива. Internet Explorer и версии ECMA (European Computer Manufacturers Association) возвращают Булево значение, основанное на успехе/неуспехе удаления; Navigator 4 возвращает undefined.

 
Пример:

delete myString.author


/ NN 2  IE J1  ECMA 1

Оператор деления. Этот оператор делит число слева от оператора на число справа. Оба операнда должны быть числами. Выражение с этим оператором возвращает число.

 
Пример:

var myQuotient = number1 / number2


== NN 2  IE J1  ECMA 1

Оператор сравнения на равенство. Этот оператор сравнивает два операнда и возвращает Булев результат. Поведение этого оператора различается в зависимости от версии JavaScript, указанного для элемента SCRIPT. Если атрибут LANGUAGE установлен как JavaScript или JavaScript1.1, некоторые операнды автоматически преобразовываются как показано в следующей таблице:

Левый Операнд

Правый Операнд

Описание

Ссылка на объект

Ссылка на объект

Сравнивает ссылки на объекты.

Любой тип данных

нуль

Преобразовывает левый операнд к типу его объекта и сравниваться с нулём .

Ссылка на объект

Строка

Преобразовывает объект в строку (через toString()) и сравнивает строки.

Строка

Число

Преобразовывает строку в число и сравнивает числовые значения.

Версия ECMAScript 1 проявляет то же самое поведение.

Ситуация немного отличается в Navigator, когда элемент SCRIPT установлен на LANGUAGE = "JavaScript1.2". Браузер при сравнивании большого количества литералов никаких автоматических преобразований данных не выполняет. Поэтому, принимая во внимание, что выражение:

123 == "123"

оценивается как true, в большинстве ситуаций из-за автоматического преобразования типа данных, выражение в Navigator 4 оценивается как false, но только в инструкциях, принадлежащих явно сценариям JavaScript 1.2. Internet Explorer 4 выполняет эквивалент непреобразованного сравнения на равенство - оператор тождества (===).

Независимо от версии, если Вы желаете сравнить значения объектов (например, строки, явно сгенерированные конструктором new String()), Вы должны преобразовать значения заранее методами типа toString() или valueOf().

 
Пример:

if (n == m) { ... }


> NN 2  IE J1  ECMA 1

Оператор "больше чем". Этот оператор сравнивает значения операндов с обеих сторон оператора. Если числовое значение левого операнда большее чем правого операнда, выражение оценивается как true. Строки преобразовываются к их значениям Unicode, и эти значения сравниваются.

 
Пример:

if (a > b) { ... }


>= NN 2  IE J1  ECMA 1

Оператор "больше чем или равно". Этот оператор сравнивает значения операндов с обеих сторон оператора. Если числовое значение левого операнда больше или равно правому операнду, выражение оценивается как true. Строки преобразовываются к их значениям Unicode, и эти значения сравниваются.

 
Пример:

if (a >= b) { ... }


=== NN n/a  IE J3  ECMA n/a

Оператор тождества. Этот оператор сравнивает два операнда на равенство и возвращает Булев результат. И значения операндов, и их тип данных должны быть идентичны, чтобы оператор возвратил истину. См. оператор равенства (==) с подобнми функциональными возможностями в Navigator.

 
Пример:

if (n === m) { ... }


++ NN 2  IE J1  ECMA 1

Оператор инкремента (приращения). Этот унарный оператор добавляет 1 к текущему значению переменного выражения. Вы можете размещать оператор перед или позади переменной для получения различного эффекта. Когда оператор перед переменной, переменная увеличивается прежде, чем возвращается её значение. Например, в следующей последовательности:

var a, b a = 5 b = ++a

1 добавлена к a перед назначением её значения b. Поэтому, когда эти инструкции заканчивают выполняться, и b, и a = 6. Напротив, в следующей последовательности:

var a, b a = 5 b = a--

Добавление происходит после присваивания значения a переменной b. Когда эти инструкции заканчиваются, b = 5 и a = 6.

Это поведение воздействует на счётчик цикла for. Как правило счетчик цикла, который растёт вверх от минимального значения, увеличивается после того, как сработали все инструкции в цикле. Таким образом в большинстве счетчиков цикла оператор ++ размещается после переменной:

for (var i = 10; i >=0; i++) ...

 
Пример:

++n n++


!= NN 2  IE J1  ECMA 1

Оператор сравнения на неравенство. Этот оператор сравнивает два операнда и возвращает Булев результат. Поведение этого оператора различается в зависимости от версии JavaScript, указанной для элемента SCRIPT. Если атрибут LANGUAGE установлен как JavaScript или JavaScript1.1, некоторые операнды могут автоматически преобразоваться так же, как и в случае с оператором сравнения на равенство (==). В версии ECMAScript 1 наблюдается то же самое поведение. Ситуация немного отличается в Navigator, когда элемент SCRIPT установлен на LANGUAGE = "JavaScript1.2". Браузер при сравнивании большого количества литералов никаких автоматических преобразований данных не выполняет. Поэтому, принимая во внимание, что выражение:

123 != "123"

оценивается как false, в Navigator 4 ,в большинстве случаев, из-за автоматического преобразования типов данных выражение оценивается как true, но только в инструкциях, явно принадлежащих сценарию JavaScript 1.2. В Internet Explorer 4 эквивалент неконвертированного сравнения на неравенство - оператор нетождества (! ==).

Независимо от версии, если Вы желаете сравнить значения объектов (например, строки, явно сгенерированные конструктором new String()), Вы должны преобразовать значения заранее методами типа toString() или valueOf().

 
Пример:

if (n != m) { ... }


< NN 2  IE J1  ECMA 1

Оператор "меньше чем". Этот оператор сравнивает значения операндов с обеих сторон оператора. Если числовое значение левого операнда меньше, чем правого операнда, выражение оценивается как true. Строки преобразовываются к их значениям Unicode, и эти значения сравниваются.

 
Пример:

if (a < b) { ... }


<= NN 2  IE J1  ECMA 1

Оператор "меньше чем или равно". Этот оператор сравнивает значения операндов с обеих сторон оператора. Если числовое значение левого операнда меньше или равно значению правого операнда, выражение оценивается как true. Строки преобразовываются к их значениям Unicode, и эти значения сравниваются.

 
Пример:

if (a <= b) { ... }


% NN 2  IE J1  ECMA 1

Оператор модуля остатка. Этот оператор делит число слева от оператора на число справа. Если остаток после деления имеет место быть, выражение представляет этот остаток как число. Если нет никакого остатка, возвращенное значение нулевое. Оба операнда должны быть числового типа данных. Выражение с этим оператором возвращает число. Даже если Вы не заинтересованы значением остатка, этот оператор - быстрый способ выяснить, являются ли два значения делимыми.

 
Пример:

if ((dayCount % 7) > 0) { ... }


* NN 2  IE J1  ECMA 1

Оператор умножения. Этот оператор умножает число слева от оператора на число справа. Оба операнда должны быть числового типа данных. Выражение с этим оператором возвращает число

 
Пример:

var myProduct = number1 * number2


- NN 2  IE J1  ECMA 1

Оператор инверсии. Этот унарный оператор инвертирует (выдаёт противоположное) по знаку значение отдельного операнда. Например, в следующих инструкциях:

a = 5 b = -a

Значение b становится -5. Выражение с оператором отрицания, приложенным к отрицательному значению, возвращает положительное значение.

 
Пример:

var myOpposite = -me


new NN 2  IE J1  ECMA 1

Оператор new. Этот оператор создает экземпляры следующих статических объектов:

Array

Boolean

Date

Function

Number

Object

RegExp

String

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

var myArray = new Array var myArray = new Array() var myArray = new Array("Larry", "Moe", "Curly")

Только последние два примера гарантированно будут работать во всех версиях браузера, поддерживающих сценарии. За исключением объекта Date, который в случае, если Вы опускаете назначение параметров при создании объекта, будет иметь свойства по умолчанию.

 
Пример:

var now = new Date()


!== NN n/a  IE J3  ECMA n/a

Оператор нетождества. Этот оператор сравнивает два операнда на неравенство и возвращает Булев результат. И значение, и тип данных этих двух операндов должны быть идентичны, чтобы этот оператор возвратил false. См. оператор неравенства (!=) с подобными функциональными возможностями в Navigator.

 
Пример:

if (n !== m) { ... }


! NN 2  IE J1  ECMA 1

Оператор NOT. Этот унарный оператор оценивает отдельный Булев операнд на значение false. Оператор NOT должен использоваться с явным Булевым значением, типа результата сравнения или установки свойства Boolean.

 
Пример:

if (a == !b) { ... }


|| NN 2  IE J1  ECMA 1

Оператор OR. Этот оператор сравнивает два выражения Boolean для истину. Если одно из выражений = true, результат оператора || также = true; если оба выражения ложные, оператор || оценивает выражение как false. Выражение Boolean может состоять из сравнения (использования любого из множества операторов сравнения) или других разнообразных значений. См. обсуждение оператора AND.

Вы можете создавать составные условия с помощью оператора &&. Например, если Вы захотели бы увидеть, является ли одно из двух условий истинно, Вы создали бы условие типа следующего:

var userEntry1 = document.forms[0].entry1.value var userEntry2 = document.forms[0].entry2.value if (userEntry1 || userEntry2) { ... }

Если хотя бы одно из выражений будет истинно, составное выражение возвратит true. Только, когда оба операнда = false составное условие = false.

 
Пример:

if (a <= b || b >= c) { ... }


- NN 2  IE J1  ECMA 1

Оператор вычитания. Этот оператор вычитает число cправа от оператора от числа слева. Оба операнда должны быть числового типа данных. Выражение с этим оператором возвращает число.

 
Пример:

var myDifference = number1 - number2


in  

Операция in возвращает true, если специфицированное свойство имеется в специфицированном объекте. Синтаксис таков:

propNameOrNumber in objectName

где propNameOrNumber это строка или числовое выражение, представляющее имя свойства или индекс массива, а objectName это имя объекта

 
Пример:

var myDifference = number1 - number2


instanceof  

Операция instanceof возвращает true, если специфицированный объект имеет специфицированный тип объекта. Синтаксис:

objectName instanceof objectType

где objectName это имя объекта, сравниваемого с objectType, а objectType это тип объекта, такой как Date или Array.

Используйте instanceof, если Вам нужно подтвердить тип объекта на этапе прогона. Например, при отлове исключений Вы можете выполнить ветвление по разным вариантам кода обработки исключений, в зависимости от типа вызываемого исключения.

 
Пример:

var myDifference = number1 - number2


typeof NN 3  IE J1  ECMA 1

Операция typeof возвращает строку, содержащую информацию о типе операнда. Она имеет вид:

typeof expr или typeof(expr)

где expr - любое выражение. Возвращаемое значение может быть одной из шести строк

"number" (число),
"string" (строка),
"boolean" (логическое значение),
"object" (объект),
"function" (функция) или
"undefined" (неопределенное значение).

В Microsoft JScript операция typeof может возвращать еще два значения: "date" (тип VT_DATE стандарта COM) и "unknown" (COM-интерфейсы ActiveX).

 
Пример:

var size = 1;
var shape = "круглый";
var today = new Date();
typeof(size); // возвращает "number"
typeof shape; // возвращает "string"
typeof today; // возвращает "object"


void NN 3  IE J2  ECMA 1

Пустой оператор. Этот унарный оператор вычисляет выражение, но возвращает значение undefined, даже если выражение (типа запроса функции) возвращает некоторое значение. Этот оператор обычно используется с javascript: псевдо-URLами, которые вызывают функции. Если функция возвращает значение, то значение игнорируется выражением запроса.

 
Пример:

<A HREF="javascript: void getSound()">...</A>



HIVE: All information for read only. Please respect copyright!
Hosted by hive КГБ: Киевская городская библиотека