Приоритеты операторов в JavaScript. Зарезервированные ключевые слова в JavaScript

Математические операции являются одними из самых базовых и универсальных функций любого языка программирования. В JavaScript числа часто используются в общих задачах, таких как определение размеров окна браузера, вычисление окончательной цены денежной транзакции или расстояния между элементами в документе сайта.

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

В отличие от других языков программирования, JavaScript имеет только один числовой тип данных; он не разделяет целые числа и числа с плавающей точкой.

Это руководство расскажет об арифметических операторах, операторах присваивания и порядке операций с числовыми данными JavaScript.

Арифметические операторы

Арифметические операторы – это символы, которые определяют математические операции и возвращают результат. К примеру, в 3 + 7 = 10 символ + определяет синтаксис операции сложения.

Многие операторы JavaScript знакомы вам из базовой математики, но есть также и несколько дополнительных операторов.

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

Оператор Синтаксис Пример Определение
Сложение + x + y Сумма x и y
Вычитание x — y Разница между x и y
Умножение * x * y Производное x и y
Деление / x / y Частное x и y
Модуль % x % y Остаток x / y
Возведение в степень ** x ** y x в степени y
Инкремент ++ x++ x плюс один
Декремент x— x минус один

Сложение и вычитание

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

Знак плюса позволяет складывать числа, например:

Помимо операций с простыми числами JavaScript позволяет присваивать числа переменным и выполнять с ними вычисления. Для примера можно присвоить числовые значения переменным x и y, а результат поместить в z.

// Assign values to x and y
let x = 10;
let y = 20;
// Add x and y and assign the sum to z
let z = x + y;
console.log(z);
30

// Assign values to x and y
let x = 10;
let y = 20;
// Subtract x from y and assign the difference to z
let z = y - x;
console.log(z);
10

// Assign values to x and y
let x = -5.2;
let y = 2.5;
// Subtract y from x and assign the difference to z
let z = x - y;
console.log(z);
-7.7

В JavaScript есть одна интересная особенность, которую следует учитывать и знать, — это результат сложения числа и строки. Мы знаем, что 1 + 1 должно равняться 2, но это уравнение выдаст неожиданный результат.

let x = 1 + "1";
console.log(x);
typeof x;
11
"string"

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

Сложение и вычитание в JavaScript часто используются для прокрутки панели навигации.

function scrollToId() {
const navHeight = 60;
window.scrollTo(0, window.pageYOffset - navHeight);
}
window.addEventListener("hashchange", scrollToId);

В этом случае панель будет прокручиваться на 60 пикселей от id.

Умножение и деление

Операторы умножения и деления JavaScript используются для поиска производного и частного числовых значений.

Звездочка является оператором умножения.

// Assign values to x and y
let x = 20;
let y = 5;
// Multiply x by y to get the product
let z = x * y;
console.log(z);
100

Умножение можно использовать для расчета цены товара после введения налога с продаж.

const price = 26.5; // Price of item before tax
const taxRate = 0.082; // 8.2% tax rate
// Calculate total after tax to two decimal places
let totalPrice = price + (price * taxRate);
totalPrice.toFixed(2);
console.log("Total:", totalPrice);
Total: 28.67

Слеш – оператор деления.

// Assign values to x and y
let x = 20;
let y = 5;
// Divide y into x to get the quotient
let z = x / y;
console.log(z);
4

Деление особенно полезно при расчете времени, например, при вычислении количества часов или процента правильных ответов в тесте.

Модуль числа

Модуль – еще один арифметический оператор, менее популярный, чем предыдущие. Представлен символом %. Он возвращает остаток при делении первого числа на второе.

К примеру, мы знаем, что 9 делится на 3 без остатка:

Модуль числа позволяет определить четное или нечетное число, например:

// Initialize function to test if a number is even
const isEven = x => {
// If the remainder after dividing by two is 0, return true
if (x % 2 === 0) {
return true;
}
// If the number is odd, return false
return false;
}
// Test the number
isEven(12);
true

В этом примере 12 делится на 2, следовательно, это четное число.

В программировании модуль числа часто используется в сочетании с условными операторами.

Возведение в степень

Возведение в степень – один из самых новых операторов JavaScript. Синтаксис возведения в степень – две звездочки подряд (**).

К примеру, 10 в пятой степени (10^5) записывается так:

10 ** 5;
100000

Операция 10 ** 5 имеет тот же результат, что 10 * 10, повторенная 5 раз.

10 * 10 * 10 * 10 * 10;

Также эту операцию можно записать с помощью метода Math.pow().

Math.pow(10, 5);
100000

Использование оператора возведения в степень – быстрый способ определить степень заданного числа, но, как обычно, при выборе между методом и оператором важно быть последовательными и писать код в одном стиле.

Инкремент и декремент

Операторы инкремента и декремента увеличивают или уменьшают числовое значение переменной на единицу. Они представлены двумя плюсами (++) или двумя минусами (—) и часто используются в циклах.

Обратите внимание: операторы инкремента и декремента могут использоваться только с переменными. Попытка использовать их с простыми числами приведет к ошибке.

7++
Uncaught ReferenceError: Invalid left-hand side expression in postfix operation

Операторы инкремента и декремента можно классифицировать как префиксные и постфиксные операции, в зависимости от того, где по отношению к переменной размещен оператор.

Префиксный инкремент записывается как ++х.

// Set a variable
let x = 7;

let prefix = ++x;
console.log(prefix);
8

Значение х увеличилось на 1. Постфиксный инкремент пишется как у++.

// Set a variable
let y = 7;
// Use the prefix increment operation
let postfix = y++;
console.log(postfix);
7

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

let y = 7;
y++;
y++;
console.log(y);
8

Чаще всего эти операторы встречаются в циклах. В данном цикле for оператор запускается 10 раз, начиная с 0.

// Run a loop ten times
for (let i = 0; i < 10; i++) {
console.log(i);
}
0
1
2
3
4
5
6
7
8
9

В этом примере итерация цикла выполняется с помощью оператора инкремента.

Проще говоря, х++ можно воспринимать как сокращение от х = х + 1, а х-как сокращение от х = х – 1.

Операторы присваивания

Одним из наиболее часто используемых операторов является оператор присваивания, который уже встречался в этом мануале. Он представлен знаком равенства (=). Символ = используется для присвоения значения справа переменной слева.

// Assign 27 to age variable
let age = 27;

Помимо стандартного оператора присваивания JavaScript имеет составные операторы присваивания, которые комбинируют арифметический оператор с оператором =.

К примеру, оператор добавления начнет с исходного значения и добавит к нему новое значение.

// Assign 27 to age variable
let age = 27;
age += 3;
console.log(age);
30

По сути, age += 3 – то же самое, что и age = age + 3.

Все арифметические операторы можно объединять с оператором присваивания. Ниже приведена справочная таблица операторов присваивания в JavaScript.

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

Приоритет операторов

Операторы выполняются в порядке приоритетности, как и в обычной математике.

К примеру, умножение имеет более высокий приоритет, чем сложение.

// First multiply 3 by 5, then add 10
10 + 3 * 5;
25

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

// First add 10 and 3, then multiply by 5
(10 + 3) * 5;
65

Ниже вы найдете таблицу приоритета арифметических операторов в JavaScript. Для инкремента и декремента постфикс имеет более высокий приоритет, чем префикс.

Инкремент/декремент, умножение/деление и сложение/вычитание имеют одинаковый уровень приоритета.

Приоритет имеют не только арифметические операторы, но и операторы присваивания, логические операторы, условные операторы и т. д. Полный список можно посмотреть .

Tags:

Выражения в 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 << y; // вернет 288 (эквивалентно 100100000) 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; // вернет 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 = ; // создает массив с элементами 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; // удаляет четвертый элемент из массива food x > 10 ? x * 2: x / 2; // возвращает значение x * 2, если x > 10, в противном случае x / 2

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

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

Старшинство Оператора

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

Старшинство операторов, от самого низкого до самого высокого будут следующие:

Присвоение =+=-=*=/=%=<<=>>=>>>=&=^=|=

Выбор по условию? :

Логическое ИЛИ ||

Логическое И&&

Побитовы ИЛИ |

Побитовый исключающее ^

Побитовое И&

Неравенство!=

Равенство/Неравенство == !=

Сравнение <<=>> =

Побитовый сдвиг <<>>>>>

Сложение/вычитание + -

Умножите/деление * / %

Отрицание/дополнение/унарный минус/инкремент/декремент! ~ - ++ --

Вызов, передача параметров () .

Зарезервированные ключевые слова в JavaScript.

JavaScript имеет ряд зарезервированных ключевых слов. Эти слова трех типов: зарезервированные слова JavaScript, зарезервированные слова для будущего и слова, которые стоит избегать для употребления. Ключевыеслова JavaScript

break false in this void

continue for new true while

delete function null typeof with

else if return var

Ключевые слова JavaScript для будущего применения

case debugger export super

catch default extends switch

class do finally throw

const enum import try

Слова, которые стоит избегать употреблять, - это те, которые уже имеют имена внутренних объектов или функций JavaScript. Сюда включены слова, подобные String или parseInt.

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

var text = new String("This is a string object");

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

Сценарии. Создание сценариев.

JavaScript является языком сценариев (скриптов), который применяют в основном для создания на Web-страницах интерактивных элементов. Его можно использовать для построения меню, проверки правильности заполнения форм, смены изображений или для чего-то еще, что можно сделать на Web-странице. Если взглянуть на GoogleMaps или службу GMail компании Google, то можно понять, на что способен сегодня язык JavaScript.

Так как JavaScript является в настоящее время единственным языком сценариев, который поддерживают все основные браузеры Web (InternetExplorer, Firefox, Netscape, Safari, Opera, Camino и т.д.), то он используется очень широко.

Код JavaScript обычно выполняется Web-браузером клиента, и в этом случае он называется сценарием на стороне клиента. Но код JavaScript можно выполнять также на Web-сервере для формирования документов HTML, воплощая тем самым сценарий на стороне сервера. Хотя использование JavaScript обычно ограничивается сценариями на стороне клиента, он является также очень мощным серверным языком.

При создании кода JavaScript требуется фактически только текстовый редактор и Web-браузер. Знание HTML и CSS будет играть определенно положительную роль, и если вы захотите использовать навыки JavaScript на Web-сайте, то понадобится также Web-сайт. Если у вас уже есть Web-сайт, то отлично! Если нет, то существует множество бесплатных серверов, которые можно использовать для размещения своих страниц.

Что касается текстового редактора, то в Windows имеется редактор NotePad. Хотя этого будет достаточно для редактирования JavaScript, HTML и CSS, более мощный редактор, такой, например, как EditPlus или другой, может оказаться более удобным.

Ну, а теперь можно перейти к созданию сценария JavaScript!

Прежде всего, необходимо узнать, как добавить сценарий JavaScript на страницу HTML. Это можно сделать одним из двух способов: поместить теги Script на Web-странице и расположить код JavaScript внутри этих тегов, или поместить весь код JavaScript в отдельный файл и связаться с ним с помощью тега Script.

Любой из этих методов вполне допустим, но они имеют разное назначение. Если имеется небольшой код, который будет использоваться только на одной странице, то размещение его между тегами Script будет хорошим решением. Если, однако, имеется большой фрагмент кода, который будет использоваться на нескольких страницах, то, наверно, лучше поместить этот код JavaScript в отдельный файл и соединиться с ним. Это делается для того, чтобы не нужно было загружать этот код всякий раз при посещении различных страниц. Код загружается один раз, и браузер сохраняет его для последующего использования. Это похоже на то, как используются каскадные таблицы стилей (CSS).

Ниже приведены примеры двух способов подключения кода JavaScript:

Функции сценариев.

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

Обычно функции определяются в разделе заголовка документа HTML, отмеченного тегами и . Как мы уже говорили, функция должна быть определена перед вызовом. Размещение всех определений функций в разделе заголовка документа HTML гарантирует доступность этих функций при обработке документа.

Общий вид определения функции представлен ниже:

function имя([параметр 1] [,параметр 2] [...,параметр N])

строки тела функции

Все параметры передаются функции по значению. Поэтому функция не может изменить содержимое переменных, передаваемых ей в качестве параметров.

С помощью ключевого слова return функция может вернуть значение.

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

Операторы могут автоматически преобразовывать типы своих операндов по мере необходимости. Например, оператор умножения * ожидает получить числа, поэтому выражение "2" * "3" считается вполне допустимым благодаря тому, что интерпретатор выполнит неявное преобразование строк в числа.

Приоритет операторов

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

В колонке Оператор троеточием показано расположение операндов относительно оператора.

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

X - y - z (x - y) - z

Оператор присваивания имеет ассоциативность справа налево, поэтому следующие два выражения эквивалентны:

W = x = y = z w = (x = (y = z))

В колонке О указано количество операндов.

В колонке Типы значений перед стрелкой указаны ожидаемые типы операндов, а после стрелки тип возвращаемого значения.

lval (сокращение от left value) - левостороннее выражение. Это исторический термин, обозначающий выражение, которое может присутствовать слева от оператора присваивания. Левосторонними выражениями являются: переменные, свойства объектов и элементы массивов.

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

Оператор Тип оператора А О Типы значений
(…) Группировка отсутствует
1 любое→любое
… . …
… […]
new … ()
Оператор доступа
Оператор доступа
new (со списком аргументов)
слева направо
слева направо
отсутствует
2
2
1
lval, lval → любой
lval, строка или число → любой
конструктор → объект
… ()
new …
Вызов функции
new (без аргументов)
слева направо
справа налево
1
1
функция → любой
конструктор → объект
… ++
… --
Постфиксный инкремент
Постфиксный декремент
отсутствует
отсутствует
1
1
lval → число
lval → число
! …
~ …
+ …
- …
++ …
-- …
delete …
typeof …
void …
Логическое НЕ (инверсия)
Побитовое НЕ (инверсия)
Унарный плюс
Унарный минус
Префиксный инкремент
Префиксный декремент
Удаление
Определяет тип данных
Возврат неопределённого значения
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
1
1
1
1
1
1
1
1
1
любое → булево
целое → целое
число → число
число → число
lval → число
lval → число
lval → булево
любое → строка
любое → undefined
… ** …
… * …
… / …
… % …
Возведение в степень
Умножение
Деление
Деление с остатком
справа налево
слева направо
слева направо
слева направо
2
2
2
2
число, число → число
число, число → число
число, число → число
число, число → число
… + …
… - …
… + …
Сложение
Вычитание
Конкатенация
слева направо
слева направо
слева направо
2
2
2
число, число → число
число, число → число
строка, строка → строка
… << …
… >> …
… >>> …
Сдвиг битов влево
Сдвиг битов вправо с сохранением знака
Сдвиг битов вправо с заполнением нулями
слева направо
слева направо
слева направо
2
2
2
целое, целое → целое
целое, целое → целое
целое, целое → целое
… < …
… <= …
… > …
… >= …
… in …
… instanceof …
Меньше чем
Меньше или равно
Больше чем
Больше или равно
Проверка наличия свойства
Проверка на принадлежность к данному типу
слева направо
слева направо
слева направо
слева направо
слева направо
слева направо
2
2
2
2
2
2
число, число → булево
число, число → булево
число, число → булево
число, число → булево
строка, объект → булево
объект, конструктор → булево
… == …
… != …
… === …
… !== …
Равно
Не равно
Строго равно
Строго не равно
слева направо
слева направо
слева направо
слева направо
2
2
2
2
любое, любое → булево
любое, любое → булево
любое, любое → булево
любое, любое → булево
… & … Побитовое И слева направо 2 целое, целое → целое
… ^ … Побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ слева направо 2 целое, целое → целое
… | … Операция с присваиванием
Операция с присваиванием
Операция с присваиванием
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
2
2
2
2
2
2
2
2
2
2
2
2
2
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
yield …
yield* …
yield
yield*
справа налево
справа налево
1
1
... … Расширение отсутствует 1
… , … Запятая слева направо 2 любое, любое → любое

Язык JavaScript поддерживает принципы объектно-ориентированного программирования. Все объекты, которые вы можете встретить в работе, можно разделить на три большие группы:

1. Встроенные объекты языка. Эти объекты предназначены для работы с отдельными типами данных или выполнения типовых задач (например, объекты Math, String, Date и пр.). Перед использованием встроенных объектов зачастую необходимо создать соответствующий экземпляр этого объекта (кроме Math).

2. Внешние стандартные объекты. Предназначены для взаимодействия со стандартными элементами интерфейса и функциями браузера. Это такие объекты как window, document и event. Все внешние объекты доступны в любом месте скрипта и не требуют создания экземпляров.

3. Пользовательские объекты. Создаются разработчиком для каких-то конкретных нужд. Создание собственных объектов требует определённых навыков и опыта разработки.

Любой объект содержит в себе свойства и методы. Свойство объекта - это какой-то количественный или качественных параметр, определяющий характеристики объекта. Метод объекта задаёт какое-то действие, которое может выполнить данный объект. Если отвлечься от программирования и рассмотреть в качестве объекта обычного человека, то его свойствами будет "рост", "вес", "цвет глаз", а методами - "есть", "пить", "ходить" и т.д.

Обратиться к свойству или методу можно, указав их имя и экземпляр объекта:

объект.свойство

объект.метод()

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

// интерпретатор вызовет МЕТОД open()

// интерпретатор будет искать СВОЙСТВО open,

// не найдёт его и выдаст ошибку

8. Специальные операторы в JavaScript.

?: Позволяет Вам выполнить простое "if...then...else"

Оценивает два выражения и возвращает результат второго выражения.

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

new Позваляет Вам создавать образец определяемого пользователем типа объекта или одного из встроенных типов объектов.

this Ключевое слово, которое Вы можете использовать, чтобы обратиться к текущему объекту.

typeof Возвращает строку, указывающую тип неоцененного операнда.

void Оператор void определяет выражение, которое будет оценено без возврата значения.

9. Приоритеты операторов в JavaScript.

Старшинство Оператора

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

Старшинство операторов, от самого низкого до самого высокого будут следующие:

Присвоение =+=-=*=/=%=<<=>>=>>>=&=^=|=

Выбор по условию? :

Логическое ИЛИ ||

Логическое И &&

Побитовы ИЛИ |

Побитовый исключающее ^

Побитовое И &

Неравенство!=

Равенство/Неравенство == !=

Сравнение <<=>> =

Побитовый сдвиг << >> >>>

Сложение/вычитание + -

Умножите/деление * / %

Отрицание/дополнение/унарный минус/инкремент/декремент! ~ - ++ --

Вызов, передача параметров () .