Урок №6: выражения в JavaScript
Выражение - это любой фрагмент исходного программного кода, который может быть использован для вычисления значения. Выражения могут быть построены из литералов, операторов, переменных и скобок. После вычисления выражения образуется единственное значение, данные значение может быть строкой, числом или логическим значением. Выражения бывают простые (первичные) и более сложные.
Разберем простейший пример, a + b = с. В данном примере a и b являются операндами, + является оператором (знаком операции), с - является результатом выражения.
Оператор - это символ, с помощью которого производятся различные виды вычислений, присваиваний или сравнений при участии одного или нескольких операндов. Операнды - это значения которые расположены слева и справа от оператора. В данной статье рассмотрим типы операторов и примеры с ними.
Арифметические операторы
В JavaScript имеются следующие арифметические операторы:
Операция | Описание | Примеры | Результаты |
---|---|---|---|
+ | операция сложения | 4+3 | 7 |
- | операция вычитания | 4-3 | 1 |
* | операция умножения | 4*3 | 12 |
/ | операция деления | 4/3 | 1.33 |
% | остаток от деления целых чисел | 4%3 | 1 |
++ | инкремент - увеличение значения операнда на единицу | 4++ | 5 |
-- | декремент - уменьшение значения операнда на единицу | 4-- | 3 |
Операторы в выражении вычисляются стандартно - слева на право, с учетом приоритетов арифметических операций. Как и в элементарной арифметике, порядок вычисления возможно изменять, использовав скобки.
x = a + y * b;
x = (a + y) * b;
Пример записи арифметических выражений:
var numb1 = 7;
var numb2 = 3;
var numb3 = 5
document.write(numb1 + numb2 + "<br>");
document.write(numb1 - numb2 + "<br>");
document.write(numb1 * numb2 + "<br>");
document.write(numb1 / numb2 + "<br>");
document.write(numb3 % numb2 + "<br>");
document.write(-numb3 % numb2);
Такие арифметические операторы как, сложение, вычитание, деление и умножение работают так же, как и в элементарной математике. Остаток от деления целых чисел получается за счет деления одного операнда на другой, например: 5/2=2 и остаток 1. Инкремент и декремент работают аналогично друг другу, разница только в том, что инкремент(++) увеличивает число на одну единицу, а декремент(--) - уменьшает. Пример:
var x = 3;
alert(x++);
alert(x);
Первое всплывающее окно отобразит цифру 3, а уже второе - цифру 4. В примере использована постфиксная форма инкремента (x++). Префиксная форма инкремента несколько отличается (++x) и сразу увеличивает число на единицу, пример:
var x = 3;
alert(++x);
Операторы декремента (--) работают аналогично операторам инкремента(++), разница только в том, что декремент уменьшает значение на одну единицу. Например:
var x = 3;
alert(--x);
Операторы сравнения
В JavaScript имеются следующие операторы сравнения:
Операция | Описание | Примеры | Результаты |
---|---|---|---|
== | равно | 4==3 | false |
!= | не равно | 4!=3 | true |
> | больше чем ... | 4>3 | true |
< | меньше чем ... | 4<3 | false |
>= | больше чем ... или равно | 4>3 | true |
<= | меньше чем ... или равно | 4<=3 | false |
=== | абсолютно идентично | 4==="4" | false |
!== | не идентично | 4!=="4" | true |
Если в результате стоит значение true, значит утверждение примера верно(правдиво), если же false - то утверждение ошибочное(ложь). Давайте разберем каждую операцию более подробно и с примерами.
Операция эквивалентности(==) и операция идентичности(===) используют разные способы для нахождения совпадения между объектами. Оператор идентичности (===) строго проверяет равенство значений не используя никаких преобразований типов для своих объектов(операндов). Оператор эквивалентности(==) менее строг и разрешает преобразование типов своих объектов(операндов) при сравнении их значений. Данные операторы равенства работают со всеми типами данных и операндами любого вида, также, если значения их операндов совпадают возвращают true, если же не совпадают - false.
Достаточно только взглянуть на примеры сравнения с использованием операндов идентичности и эквивалентности. Ниже, в примере, используется операция идентичности (===).
var x = {x: 2};
var y = x;
'7' === 7 // false - разные типы данных
null === null // true
undefined === undefined // true
true === true // true
false === false // true
NaN === NaN // false
(2 + 2) === 4 // true - два одинаковых числа
0 === -0 // true
'строка' === 'Строка' // false - первые символы строки разные
{x: 2} === {x: 2} // false
x === y // true - ссылаются на один объект
Ниже в примере используется операция эквивалентности:
null == undefined // true
"123" == 123 // true
true == "1" // true
false == 0 // true
(4+2) == 6 // true
"my car" == "my car" // true
4 == 5 // false
Операторы неидентичности(!==) и неравенства(!=) работают, аналогично операторам (===) и (==), только в точной противоположности. К примеру, оператор (!=) возвращает false, если оператор (==) считает два значения равными. Остальные операторы сравнения работают также как в элементарной математике и не имеют особенностей.
Логические операторы
В JavaScript имеются следующие логические операторы:
Оператор | Название | Примеры использования | Описание true/false |
---|---|---|---|
&& | AND (и) | fbi_1 && fbi_2 | если оба выражения fbi_1 и fbi_2 равны true; false в противном случае |
|| | OR (или) | fbi_1 || fbi_2 | если хотя бы одно из выражений fbi_1 или fbi_2 равно true; false в противном случае |
! | NOT (не) | !fbi | true если выражение fbi равно false; false - если выражение fbi равно true |
Оператор И (&&) выполняет логическую операцию И над двумя операндами между оператором. Работа его начинается с вычисления левого операнда. Если значение левого операнда можно преобразовать в false - то значение левого операнда будет возращено, и при этом значение правого операнда не будет вычисляться.
Оператор ИЛИ (||) выполняет логическую операцию ИЛИ над двумя операндами между оператором. Работа его начинается с вычисления левого операнда. Если значение левого операнда можно преобразовать в true - то значение левого операнда будет возращено, и при этом значение правого операнда не будет вычисляться.
Оператор НЕ (!) является унарным. Его используют для инверсии логического значения операнда. Перед инверсией, если необходимо, данный оператор преобразует значение своего операнда в булево. К примеру, если изначально переменная "z" имеет значение true, или любое другое значение, которое можно преобразовать в true, то при выражении !z, вернется значение false. Если же переменная "z" изначально имеет значение false, то выражение !z вернет противоположное значение true.
Приоритеты выполнения операций
Углубляться в тему не будем, так как по ней написано очень много теоретических материалов. Главное запомнить порядок выполнения операций в выражениях. Для этого можно воспользоваться следующей таблицей.
Операция | Описание |
---|---|
++ | инкремент |
-- | декремент |
! | отрицание |
- | унарный минус |
* | умножение |
/ , % | деление, остаток от деления |
+ | сложение |
- | вычитание |
<, >, <=, >= | сравнение "больше, меньше или/и равно" |
== | равенство |
!= | не равенство |
&& | логическое "И" ("and") |
|| | логическое "Или" ("or") |
=, +=, -=, *=, /=, %=, != | присваивание |
Стоит заметить, на данном уроке были рассмотрены далеко не все операторы. Существуют побитовые операторы, которые дают возможности осуществлять низкоуровневые манипуляции с двоичными числами. Побитовые операторы при программировании на JavaScript используются крайне редко. Также существуют условные операторы, операторы запятые и пр., мы однозначно еще к ним вернемся и рассмотрим. Далее рассмотрим события в JavaScript.
На следующем уроке рассмотрим функции в JavaScript, а также примеры функций: Функции в JavaScript