1.2 Выражения и простые операторы.
Выражение - любой, имеющий значение набор литералов, переменных, операторов,
и выражений, который приводит к единственному значению. Значение может
быть числом, строкой или Boolean. Специальное ключевое слово null обозначает
пустое значение. Следует различать null и переменные, которым не были присвоены
значения, последние не определены и будут вызывать ошибку во время выполнения,
если используются как числовые переменные. Однако элементы массива, которым
не было присвоено значение оцениваются как false. В следующем примере исполняется
оператор str="Hello !", потому что элемент массива не определен:
myArray=new Array() if (!myArray["notThere"]) str="Hello
!"
1.2.1 Условные выражения.
Условное выражение может иметь одно из двух значений, в зависимости
от условия.
Его синтаксис таков: (condition)? value1: value2
Если условие (condition) истинно, выражение имеет значение value1, иначе
- value2. Можно использовать условное выражение везде, где допустимо стандартное
выражение. Например, status = (age >= 50) ? "old" : "young"
1.2.2 Оператор присваивания.
Оператор присваивания (=) присваивает значение правого операнда левому.
То есть x =y присваивает x значение y. Существует сокращенная форма оператора
присваивания, общий вид которой:
<переменная> <знак операции> = <выражение>
при этом подразумевается выполнение следующего оператора присваивания:
<переменная>=<переменная><знак операции><выражение>
Знаком операции могут быть: +(сложение), -(вычитание), *(умножение),
/(деление), %(деление по модулю), <<(сдвиг влево), >>(сдвиг
вправо), >>>(сдвиг вправо с заполнением нулями), &(побитовое
И), ^(побитовое исключающее ИЛИ), |(побитовое ИЛИ).
1.2.3 Операторы cравнения.
Операторы сравнения сравнивают операнды и возвращают логическое значение,
основанное на истинности сравнения. Операнды могут быть числовые или строковые.
Когда используются строковые значения операндов, сравнение проводится с
помощью стандартного лексикографического анализа. Операторы приведены в
следующей таблице:
оператор |
описание оператора |
пример |
равно(==) |
возвращает true, если операнды равны |
x == y |
не равно(!=) |
озвращает true, если операнды не равны |
x != y |
больше(>) |
возвращает true, если левый операнд больше |
x > y |
больше или равно(>=) |
возвращает true, если левый операнд больше или равен правому |
x >= y |
меньше (<) |
возвращает true, левый операнд меньше |
x < y |
меньше или равно (<=) |
возвращает true, левый операнд меньше или равен правому |
x <= y |
1.2.4 Арифметические операторы.
Стандартные арифметические операторы - сложение(+), вычитание(-), умножение
(*) и деление (/). Эти операторы работают также, как и в других языках
программирования.
Деление по модулю (%). Оператор деления по модулю используется
следующим образом:var1 % var2, возвращается остаток от деления var1 на
var2. Например, 12%5 возвращает 2.
Приращение(++)(инкремент). Оператор приращения используется следующим
образом: var++ или ++var. Этот оператор увеличивает (добавляет единицу)
операнд и возвращает значение. Если используется постфиксная форма, то
сначала возвращается значение, затем происходит увеличение. При использовании
префиксной формы сначала происходит увеличение, затем возращение значения.
Например, если x=3, тогда выражение y=x++ приведет к тому, что у=3 и х=4,
а выражение у=++х к тому, что х=4 и у=4.
Уменьшение(--)(декремент). Оператор уменьшения используется следующим
образом: var -- или --var. Этот оператор уменьшает (вычитает единицу) операнд
и возвращает значение. Если используется постфиксная форма, то сначала
возвращается значение, затем происходит уменьшение. При использовании префиксной
формы сначала происходит уменьшение, затем возращение значения. Например,
если x=3, тогда выражение y=x-- приведет к тому, что у=3 и х=2, а выражение
у=--х к тому, что х=2 и у=2. Одноместное отрицание (-). Одноместное отрицание
предшествует операнду и инвертирует его. Например, x =-x инвертирует значение
x; то есть если x было равно 3, станет -3.
1.2.5 Битовые операторы.
Битовые операторы обращаются с их операндами как с набором бит (нулями
и единицами), несмотря на то, каким было исходное число - десятичным, шестнадцатеричным
или восьмеричным, оно предварительно преобразуется к тридцатидвухбитовому
целому. Возращается стандартное числовое значение. В следующей таблице
приведено описание битовых операторов.
Оператор |
использование |
описание |
AND |
a&b |
возвращает 1 в каждый бит результата, если оба соответствующих бита
операндов равны 1 |
OR |
а|b |
возвращает 1 в каждый бит результата, если хотя бы один из соответствующих
битов операндов равен 1 |
XOR |
a^b |
возвращает 1 в битовую позицию, если биты операндов различны |
NOT |
~a |
инвертирует биты операнда |
Сдвиг влево |
a<<b |
операнд а сдвигается влево на b позиций, справа а заполняется нулями
(соответствует умножению на 2) |
Сдвиг вправо |
a>>b |
операнд а сдвигается вправо на b позиций, освобождающиеся разряды заполняются
знаковым значением |
беззнаковый сдвиг вправо |
a>>>b |
операнд а сдвигается вправо на b позиций, освобождающиеся разряды заполняются
нулями |
1.2.6 Логические операторы.
Логические операторы должны иметь логические операнды и возвращают логический
результат.
Оператор |
использование |
описание |
AND |
a&&b |
возвращает true, если a=true и b=true |
OR |
a||b |
возвращает false, если a=false и b=false |
NOT |
!a |
возвращает true, если a=false и наоборот |
1.2.7 Строковые операторы.
В дополнение к операторам сравнения, которые могут использоваться для
сравнения строк, имеется оператор конкатенации, который используется для
слияния строк. Например, "two " + "words" возвращает
значение "two words". Оператор присваивания += может также использоваться
при конкатенации, например, если переменная mystring имеет значение "alpha"
и вычисляется выражение mystring+="bet", то возвращается результат
равный "alphabet", который присваивается переменной mystring.
1.2.8 Специальные операторы.
new.
Можно использовать оператор new, для того чтобы создать объект, встроенный
или определенный пользователем, встроенные объекты могут иметь тип Array,
Boolean, Date, Function, Math, Number, или String.
Синтаксис этого оператора следующий:
name = new typ( param1 [,param2] ...[,paramN] )
где name - имя вновь созданного объекта, typ - его тип и param - параметры.
typeof.
Оператор typeof может быть записан следующим образом:
- 1. typeof операнд
- 2. typeof (операнд)
Возвращается строковое значение, описывающее тип операнда. Предположим
имеются следующие переменные:
- var myFun = new Function("5+2")
- var typ="round"
- var count=1
- var today=new Date()
Оператор typeof возвратит следующие результаты для них.
- typeof myFun is object
- typeof typ is string
- typeof count is number
- typeof today is object typeof dontExist is undefined
Для ключевых слов true и null, оператор typeof возвратит результаты:
- typeof true is boolean
- typeof null is object
Для числа или строки результат будет выглядеть следующим образом:
- typeof 745 is number
- typeof 'Hello !' is string
Свойства объектов (см. далее) оцениваются следующим образом:
- typeof document.lastModified is string
- typeof window.length is number
- typeof Math.LN2 is number
Для методов и функций возвращается результат:
- typeof blur is function
- typeof eval is function
- typeof parseInt is function
- typeof shape.split is function
Для объектов возвращается результат:
typeof Date is function
typeof Function is function
typeof Math is function
typeof Option is function
void.
Синтаксис оператора:
- 1. javascript:void (expression)
- 2. javascript:void expression
Оператор void определяет выражение, которое не возвращает никакого значения.
Круглые скобки необязательны, но их использование является хорошим стилем.
Можно использовать оператор void, чтобы определить гипертекстовую ссылку,
по которой будет что-нибудь выполнено, но перехода по ссылке не последует.
Следующий оператор создает ссылку, которая ничего не делает, когда пользователь
активизирует ее. <A HREF="javascript:void(0)">Click here
to do nothing</A>
1.2.9 Приоритеты операторов.
Следующая таблица описывает приоритеты операторов, сверху вниз от самого
высокого до самого низкого, операторы в одной строке имеют равный приоритет:
() [] .
++ -- ~ !
/ %
+ -
>> << >>>
> >= < <=
== !=
&
^
|
&&
||
?:
=
[ Оглавление ] [ Дальше ]
|