Статьи

Вирази в JavaScript

  1. 1. Арифметичні оператори
  2. 2. Оператори присвоювання
  3. 3. Оператори інкремента і декремента
  4. 4. Оператори порівняння
  5. 5. Логічні оператори
  6. 6. Побітові оператори
  7. 7. Строкові оператори
  8. 8. Спеціальні оператори
  9. 9. Коментарі в JavaScript

Вирази в JavaScript є комбінаціями операндів і операторів.

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

Наприклад, в операціях порівняння беруть участь операнди різних типів, але повертається результат завжди буде логічного типу

Мал. 1. Структура вираження в JavaScript

Операнди - це дані, що обробляються сценарієм JavaScript. Як операнди можуть бути як прості типи даних, так і складні, а також інші вирази.

Оператори - це символи мови, які виконують різні операції з даними. Оператори можуть записуватися за допомогою символів пунктуації або ключових слів.

Залежно від кількості операндів розрізняють наступні типи операторів:
унарний - в операції бере участь один операнд;
бінарний - в операції беруть участь два операнда;
тернарний - комбінує три операнда.

Найпростіша форма вираження - літерал - щось, що обчислюється саме в себе, наприклад, число 100, рядок "Hellow world". Мінлива теж може бути виразом, так як вона обчислюється в присвоєне їй значення.

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. Оператори присвоювання

Оператори присвоювання використовуються для присвоювання значень змінним. Комбіновані оператори дозволяють зберегти початкове і подальше значення в однієї змінної.

Таблиця 2. Оператори присвоювання Оператор / Операція Опис Пріоритет = Присвоєння Використовується для надання значення змінної. 2 + =, - =, * =, / =,% = Комбінований оператор Виконує присвоювання з операцією. Між першим і другим операндом виконується відповідна операція, потім результат присвоюється першому операнду. 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. Оператори інкремента і декремента

Операції інкремента і декремента є унарними і виробляють збільшення і зменшення значення операнда на одиницю. Як операнда може бути змінна, елемент масиву, властивість об'єкта. Найчастіше такі операції використовуються для збільшення лічильника в циклі.

Таблиця 3. Оператори інкремента і декремента Оператор / Операція Опис Пріоритет ++ x Префіксний інкремент Збільшує операнд на одиницю. 14 x ++ Постфіксний інкремент Додає до операнду одиницю, але результатом виразу буде початкове значення операнда. 14 --x Префіксний декремент Зменшує на одиницю операнд, повертаючи зменшене значення. 14 x-- Постфіксний декремент Зменшує на одиницю операнд, повертаючи первісне значення. 14 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.

Таблиця 5. Логічні оператори Оператор / Операція Опис Пріоритет && Логічне І Повертає true, тільки якщо обидва операнда істинні. При виконанні операції спочатку перевіряється значення першого операнда. Якщо воно має значення false, то значення другого оператора не враховується і результату виразу присвоюється false. 5 || Логічне АБО Повертає true, якщо хоча б один операнд правдивий, тобто перевіряє істинність як мінімум однієї умови. 4! Логічне НЕ Змінює значення оператора на зворотне - з true на false і навпаки. 14 (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 << y; // поверне 288 (еквівалентно 100 100 000) result = x >> z; // поверне 2 (еквівалентно 10) result = s >>> z; // поверне 1073741822 (еквівалентно +111111111111111111111111111110)

7. Строкові оператори

Існує кілька операторів, які працюють з рядками особливим чином.

Таблиця 7. Строкові оператори Оператор / Операція Опис Пріоритет + Конкатенація Оператор працює зліва направо, виконуючи об'єднання рядків. Якщо перший операнд є рядком, наступні операнди будуть перетворені в рядки і далі виконається їх об'єднання. 12 + = Конкатенація з привласненням Виконується об'єднання двох рядків і результат присвоюється змінної. 12>,,> =,, == Порівняння Рядки порівнюються за алфавітом, літери у верхньому регістрі завжди менше букв в нижньому регістрі. Порівняння рядків грунтується на номерах символів, зазначених в стандарті Unicode, де великі літери йдуть раніше, ніж малі. 10 "1" + "10"; // поверне "110" "1" + 10; // поверне "110" 2 + 5 + "кольорових олівців"; // поверне "7 кольорових олівців" "Кольорових олівців" + 2 + 5; // поверне "Кольорових олівців 25" "1"> "10"; // поверне false "10" <= 10; // поверне true "СРСР" == "ссср"; // поверне false x = "micro"; x + = "soft"; // поверне "microsoft"

8. Спеціальні оператори

Таблиця 8. Спеціальні оператори Оператор / Операція Опис Пріоритет. Звернення до властивості Здійснює доступ до властивості об'єкта. 15, Множина обчислення Обчислює кілька незалежних виразів, записаних в один рядок. 1 [] Індексація масиву Здійснює доступ до елементів масиву або властивостей об'єкта. 15 () Виклик функції, угруповання групуються операції або викликає функцію. 15 typeof Визначення типу даних Унарний оператор, повертає тип даних операнда. 14 instanceof Перевірка типу об'єкта Оператор перевіряє, чи є об'єкт екземпляром певного класу. Лівий операнд повинен бути об'єктом, правий - повинен містити ім'я класу об'єктів. Результат буде true, якщо об'єкт, який зображено зліва, являє собою екземпляр класу, зазначеного справа, в іншому випадку - false. 10 in Перевірка наявності властивості В якості лівого операнда повинна бути рядок, а правим - масив або об'єкт. Якщо ліве значення є властивістю об'єкта, повернеться результат true. 10 new Створення об'єкта Оператор створює новий об'єкт з невизначеними властивостями, потім викликає функцію-конструктор для його ініціалізації (передачі параметрів). Також може застосовуватися для створення масиву. 1 delete Видалення Оператор дозволяє видаляти властивість з об'єкта або елемент з масиву. Повертає true, якщо видалення пройшло успішно, в іншому випадку false. При видаленні елемента масиву його довжина не змінюється. 14 void Визначення вираження без значення, що повертається Унарний оператор, відкидає значення операнда і повертає underfined. 14?: Операція умовного виразу тернарного оператор, дозволяє організувати просте розгалуження. У вираженні беруть участь три операнда, перший повинен бути логічним значенням або перетворюватися в нього, а другий і третій - будь-якими значеннями. Якщо перший операнд дорівнює true, то умовний вираз прийме значення другого операнда; якщо false - третього. 3 document.write ( "hello world"); // виводить на екран рядок hello world i = 0, j = 1; // зберігає значення в змінних function1 (10, 5); // виклик функції function1 з параметрами 10 і 5 var year = [2014 року, 2015]; // створює масив з елементами typeof {a: 1}; // поверне "object" var d = new Date (); // створюємо новий об'єкт за допомогою конструктора Date () d instanceof Date; // поверне true var mycar = {make: "Honda", model: "Accord", year: 2005}; "Make" in mycar; // поверне true var obj = new Object (); // створює порожній об'єкт var food = [ "milk", "bread", "meat", "olive oil", "cheese"]; delete food [3]; // видаляє четвертий елемент з масиву food Натисніть тут, нічого не відбудеться x> 10? x * 2: x / 2; // повертає значення x * 2, якщо x> 10, в іншому випадку x / 2

9. Коментарі в JavaScript

Однорядковий коментар: перед текстом коментаря потрібно поставити символи //.

// Це однорядковий коментар

Складний коментар поміщається між символами / * і * /.

/ * Це багаторядковий коментар * /

Новости