Операторы вычисления javascript. Операторы JavaScript. Выражения и операторы в JavaScript

Выражения в JavaScript представляют собой комбинации операндов и операторов .

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

Рис. 1. Структура выражения в JavaScript

Операнды — это данные, обрабатываемые сценарием JavaScript. В качестве операндов могут быть как простые типы данных, так и сложные, а также другие выражения.

Операторы — это символы языка, выполняющие различные операции с данными. Операторы могут записываться с помощью символов пунктуации или ключевых слов.

В зависимости от количества операндов различают следующие типы операторов:
унарный — в операции участвует один операнд;
бинарный — в операции участвуют два операнда;
тернарный — комбинирует три операнда.

Простейшая форма выражения — литерал — нечто, вычисляемое само в себя, например, число 100 , строка "Hellow world" . Переменная тоже может быть выражением, так как она вычисляется в присвоенное ей значение.

Выражения и операторы в JavaScript 1. Арифметические операторы

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

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

Таблица 1. Арифметические операторы Оператор/Операция Описание Приоритет
+ Сложение Складывает числовые операнды. Если один из операндов — строка, то результатом выражения будет строка. 12
- Вычитание Выполняет вычитание второго операнда из первого. 12
- Унарный минус Преобразует положительное число в отрицательное, и наоборот. 14
* Умножение Умножает два операнда. 13
/ Деление Делит первый операнд на второй. Результатом деления может являться как целое, так и число с плавающей точкой. 13
% Деление по модулю (остаток от деления) Вычисляет остаток, получаемый при целочисленном делении первого операнда на второй. Применяется как к целым числам, так и числам с плавающей точкой. 13
var x = 5, y = 8, z; z = x + y; // вернет 13 z = x - y; // вернет -3 z = - y; // вернет -8 z = x * y; // вернет 40 z = x / y; // вернет 0.625 z = y % x; // вернет 3 2. Операторы присваивания

Операторы присваивания используются для присваивания значений переменным. Комбинированные операторы позволяют сохранить первоначальное и последующее значение в одной переменной.

var a = 5; // присваиваем переменной a числовое значение 5 var b = "hellow"; // сохраняем в переменной b строку hellow var m = n = z = 10; // присваиваем переменным m, n, z числовое значение 10 x += 10; // равнозначно x = x + 10; x -= 10; // равнозначно x = x - 10; x *= 10; // равнозначно x = x * 10; x /= 10; // равнозначно x = x / 10; x %= 10; // равнозначно x = x % 10; 3. Операторы инкремента и декремента

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

var x = y = m = n = 5, z, s, k, l; z = ++x * 2; /* в результате вычислений вернет значение z = 12, x = 6, т.е. значение x сначала увеличивается на 1, а после выполняется операция умножения */ s = y++ * 2; /* в результате вычислений вернет значение s = 10, y = 6, т.е. сначала выполняется операция умножения, а после в переменной y сохраняется увеличенное на 1 значение */ k = --m * 2; // вернет значение k = 8, m = 4 l = n-- * 2; // вернет значение l = 10, n = 4 4. Операторы сравнения

Операторы сравнения используются для сопоставления операндов, результатом выражения может быть одно из двух значений — true или false . Операндами могут быть не только числа, но и строки, логические значения и объекты. Однако сравнение может выполняться только для чисел и строк, поэтому операнды, не являющиеся числами или строками, преобразуются.

Если оба операнда не могут быть успешно преобразованы в числа или строки, операторы всегда возвращают false .

Если оба операнда являются строками/числами или могут быть преобразованы в строки/числа, они будут сравниваться как строки/числа.

Если один операнд является строкой/преобразуется в строку, а другой является числом/преобразуется в число, то оператор попытается преобразовать строку в число и выполнить сравнение чисел. Если строка не является числом, она преобразуется в значение NaN и результатом сравнения будет false .

Чаще всего операции сравнения используются при организации ветвлений в программах.

Таблица 4. Операторы сравнения Оператор/Операция Описание Приоритет
== Равенство Проверяет две величины на совпадение, допуская преобразование типов. Возвращает true , если операнды совпадают, и false , если они различны. 9
!= Неравенство Возвращает true , если операнды не равны 9
=== Идентичность Проверяет два операнда на «идентичность», руководствуясь строгим определением совпадения. Возвращает true , если операнды равны без преобразования типов. 9
!== Неидентичность Выполняет проверку идентичности. Возвращает true , если операнды не равны без преобразования типов. 9
> Больше Возвращает true , если первый операнд больше второго, в противном случае возвращает false . 10
>= Больше или равно Возвращает true , если первый операнд не меньше второго, в противном случае возвращает false . 10
Возвращает true , если первый операнд меньше второго, в противном случае возвращает false . 10
Возвращает true , если первый операнд не больше второго, в противном случае возвращает false . 10
5 == "5"; // вернет true 5 != -5.0; // вернет true 5 === "5"; // вернет false false === false; // вернет true 1 !== true; // вернет true 1 != true; // вернет false, так как true преобразуется в 1 3 > -3; // вернет true 3 >= "4"; // вернет false 5. Логические операторы

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

(2 < 3) && (3===3); // вернет true, так как выражения в обеих скобках дают true (x < 10 && x > 0); // вернет true, если значение x принадлежит промежутку от 0 до 10 !false; // вернет true 6. Побитовые операторы

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

Таблица 6. Побитовые операторы Оператор/Операция Описание Приоритет
& Побитовый И Если оба бита равны 1 , то результирующий бит будет равен 1 . В противном случае результат равен 0 . 8
| Побитовый ИЛИ Если один из операндов содержит в позиции 1 , результат тоже будет содержать 1 в этой позиции, в противном случае результат в этой позиции будет равен 0 . 6
^ Исключающее ИЛИ Если одно, и только одно значение содержит 1 в какой-либо позиции, то и результат будет содержать 1 в этой позиции, в противном случае результат в этой позиции будет равен 0 . 7
~ Отрицание Выполняется операция побитового отрицания над двоичным представлением значения выражения. Любая позиция, содержащая 1 в исходном выражении, заменяется на 0 . Любая позиция, содержащая 0 в исходном выражении, становится равной 0 . Положительные числа начинаются с 0 , отрицательные - с -1 , поэтому ~ n == -(n+1) . 14
Оператор сдвигает биты первого операнда влево на число битовых позиций, установленных вторым операндом. Для заполнения позиций справа используются нули. Возвращают результат того же типа, что левый операнд. 11
>> Побитовый сдвиг вправо Оператор сдвигает биты первого операнда вправо на число битовых позиций, установленных вторым операндом. Цифры, сдвинутые за пределы диапазона, удаляются. Самый старший бит (32й) не меняется, чтобы сохранить знак результата. Если первый операнд положителен, старшие биты результата заполняются нулями; если первый операнд отрицателен, старшие биты результата заполняются единицами. Сдвиг значения вправо на одну позицию эквивалентен делению на 2 (с отбрасыванием остатка), а сдвиг вправо на две позиции эквивалентен делению на 4 и т. д. 11
>>> Побитовый сдвиг вправо без учета знака Оператор сдвигает биты первого операнда вправо на число битовых позиций, установленных вторым операндом. Слева добавляются нули независимо от знака первого операнда. Цифры, сдвинутые за пределы диапазона, удаляются. 11
var x = 9, y = 5, z = 2, s = -5, result; // 9 эквивалентно 1001, 5 эквивалентно 0101 result = x & y; // вернет 1 (эквивалентно 0001) result = x | y; // вернет 13 (эквивалентно 1101) result = x ^ y; // вернет 12 (эквивалентно 1100) result = ~ y; // вернет -6 (эквивалентно 1100) result = x > z; // вернет 2 (эквивалентно 10) result = s >>> z; // вернет 1073741822 (эквивалентно 111111111111111111111111111110) 7. Строковые операторы

Существует несколько операторов, которые работают со строками особым образом.

"1" + "10"; // вернет "110" "1" + 10; // вернет "110" 2 + 5 + " цветных карандашей"; // вернет "7 цветных карандашей" "Цветных карандашей " + 2 + 5; // вернет "Цветных карандашей 25" "1" > "10"; // вернет false "10" 10 ? x * 2: x / 2; // возвращает значение x * 2, если x > 10, в противном случае x / 2 9. Комментарии в JavaScript

Однострочный комментарий: перед текстом комментария нужно поставить символы // .

var a = 10; var b = (a>1) ? 100: 200; alert(b);

Если условие a>1 истинно, то переменной b присвоить значение 100 , иначе переменной b присвоить значение 200 .

Задание Js 3_4. Дополнить код: объявлено 3 локальные переменные с использованием ключевого слова var . Необходимо в переменную max присвоить значение следующего тернарного оператора: если a больше b , то возвращаем a , иначе возвращаем b .
Фрагмент кода:

if (a * b < 6) { result = "Мало"; } else { result = "Много"; }


Вопросы для самоконтроля:

  • Каков синтаксис тернарного оператора?
  • Сколько аргументов у тернарного оператора?
  • Оператор переключения в javaScript - switch

    Оператор switch javascript служит для проверки переменной на множество значений:

    Синтаксис:

    switch (переменная или выражение) { case вариант1: //..блок операторов.. break case вариант2: //..блок операторов.. break default: //..блок операторов.. }

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

    Блок, начинающийся со служебного слова default можно опустить. Операторы блока будут выполнены в случае, если ни одно из перечисленных значений во всех case не подходит.

    Важно: Оператор break обязателен после каждого рассмотренного значения переменной (после каждого case ); если его не использовать, то будут выведены все, расположенные ниже операторы

    Сравним с оператором IF :

    var a = 2; switch(a) { case 0: // if (a === 0) case 1: // if (a === 0) alert("Ноль или один"); // тогда выводим... break; case 2: // if (a === 2) alert("Два"); // тогда выводим... break; default: // else alert("Много"); // иначе выводим... }

    Как сгруппировать несколько вариантов?

    Для выполнения одних и тех же операторов возможно группировка нескольких case . Как в примере выше:

    Case 0: case 1: alert("Ноль или один"); break; ...

    При a = 0 и a = 1 выполняется один и тот же оператор: alert("Ноль или один");

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


    ✍ Решение:
    • Создайте веб-страницу с html-скелетом и тегом script .
    • Инициализируйте переменную color
    • var color = prompt("Какой цвет?" ) ;

      var color = prompt("Какой цвет?");

    • Проверьте значение переменной с помощью конструкции switсh , выводя на каждое значение - соответствующий перевод:
    • switch (color) { case "красный" : alert("red"); break; case "зеленый": alert("green"); break; // ...

      Если переменная color имеет значение "красный", то вывести в модальное окно перевод - "red" и выйти из конструкции (break;). Если переменная color имеет значение "зеленый", то вывести в модальное окно перевод - "green" и выйти из конструкции (break;).

    • Для цветов "синий" и "голубой" выполните группировку:
    • // ... case "синий": case "голубой": alert("blue"); break; // ...

      Если переменная color имеет значение "синий" или переменная color имеет значение "голубой", то вывести в модальное окно перевод - "blue" и выйти из конструкции (break;).

    • Организуйте вывод для тех цветов, которые не предусмотрены программой:
    • // ... default : alert("y нас нет сведений по данному цвету" ) } // конец switch

      // ... default: alert("y нас нет сведений по данному цвету") } // конец switch

    • Протестируйте сценарий в браузере.

    Задание Js 3_6. Найдите и исправьте ошибки в следующем фрагменте кода:

    14 15 16 17 var number = prompt("Введите число 1 или 2:" ) ; switch (number) { case "1" { document.write ("Один" ) ; } ; break ; case "2" { document.write ("Два" ) ; } ; break ; default { document.write ("Вы ввели значение, отличное от 1 и 2" ) ; } ; }

    var number = prompt("Введите число 1 или 2:"); switch (number) { case "1" { document.write("Один"); }; break; case "2" { document.write("Два"); }; break; default { document.write("Вы ввели значение, отличное от 1 и 2"); }; }


    Задание Js 3_7. Что выведется на экране при выполнении следующего кода?:

    1 2 3 4 5 6 7 8 9 10 11 12 13 var value = "2" ; switch (value) { case "1" : case "2" : case "3" : document.write ("Hello" ) ; break ; case "4" : case "5" : document.write ("World" ) ; default : document.write ("Error" ) ; }

    var value = "2"; switch (value) { case "1": case "2": case "3": document.write("Hello"); break; case "4": case "5": document.write("World"); default: document.write("Error"); }


    Задание Js 3_8. У пользователя запрашивать число – количество ворон на ветке. В зависимости от введенного числа (не более 10), выводить сообщение: - На ветке сидит 1 ворона - На ветке сидит 4 вороны - На ветке сидит 10 ворон

  • В зависимости от введенного числа, меняется окончание у слова "ворона" .
  • Для проверки использовать оператор Switch javascript.
  • Сохраните данную страницу в папке результатов (она пригодится для дальнейших работ).

  • Вопросы для самоконтроля:

  • В каком случае целесообразно в качестве условного оператора использовать конструкцию switch ?
  • Для чего служит блок default в операторе switch ?
  • Обязательно ли использование оператора break в конструкции switch ?
  • Как осуществляется группировка для нескольких вариантов значений в операторе switch ?
  • Циклические операторы языка javaScript - For

    Синтаксис:

    for(начальное значение счетчика; условие; приращение счетчика) { //..блок операторов.. }

    Важно: Цикл в javascript for используется, когда заранее известно, сколько раз должны повториться циклические действия (сколько итераций у цикла)

    • В качестве начального значения счетчика итераций используется выражение присваивания: например, i=0 - счетчик цикла начинается с нуля:
    • for(var i = 0; условие; приращение счетчика) { //..блок операторов.. }

    • В качестве приращения счетчика указывается шаг, с которым должен увеличиваться счетчик: например, указывает на то, что каждая итерация цикла будет сопровождаться его увеличением на 1 :
    • for(var i = 0; условие; i++) { //..блок операторов.. }

    • Условие цикла - это и есть конечное значение счетчика: например, i10, останавливает цикл:
    • for(var i = 0; i

      Алгоритм