Книга JavaScript/Спецификация языка

Материал из Викиучебника — открытых книг для открытого мира

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

Переменные[править]

Переменные в JavaScript назначаются двумя способами:

1. С помощью оператора «=»: ''переменная'' = ''значение''. Пример:

x = 1; // переменной x задаётся значение 1

2. С помощью ключевого слова var и оператора «=»: var ''переменная'' или var ''переменная'' = ''значение''. Пример:

var x;
x = 1;
// или
var x = 1;

Второй способ отличается от первого тем, что можно назначать сразу несколько переменных:

var x = 1, y = 2;

А так же тем, что второй способ определяет значение переменной только в своём блоке кода. Если присвоить значение переменной, не объявленной с помощью инструкции var, JavaScript неявно объявит эту переменную за вас. Однако переменные, объявленные таким образом, всегда создаются как глобальные, даже если они работают только в теле функции.

В именах переменных могут использоваться латинские буквы (a…z, A…Z), цифры (0…9), знак доллара ($) и знак подчёркивания (_), при этом нельзя использовать цифру первой. Необходимо помнить, что JavaScript — регистрозависимый язык, и переменные X и x, будут считаться различными.

Операторы[править]

Комментарии[править]

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

1. Оператор «//» используют, чтобы текст, расположенный справа от оператора до конца строки, сделать комментарием: ''программа'' // ''комментарий''. Пример:

x = 3; // Присвоение переменной x значения 3
y = 5; // Присвоение переменной y значения 5

2. Операторы «/*» и «*/» используют, чтобы текст расположенный внутри операторов сделать комментарием: ''программа'' /* ''комментарий'' */ ''программа''. Пример:

x = 3;   /* Присвоение переменной x значения 3,
           а переменной y — 5: */
y = 5;

Арифметические[править]

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

Существует 3 типа данных:

  • строковый (string) — определяется двойными или одинарными кавычками и используется для символьных данных,
  • числовой (number) — определяется отсутствием кавычек и используется для чисел (не символов),
  • логический (boolean) — определяется отсутствием кавычек и используется для значений true (1) или false (0).

Также существуют специальные типы данных:

  • null — отсутствие данных,
  • undefined – не определено,
  • массив (array),
  • объект (object) — программный объект (ссылка на него),
  • функция (function) — определение функции.
Оператор Название Пример Результат
+ Сложение x + y Сложение двух чисел или склеивание двух строк
- Вычитание x - y Вычитание y из x или удаление строки y из строки х
* Умножение x * y Перемножение двух чисел
/ Деление x / y Деление числа x на число y
% Деление по модулю (остаток) x % y Остаток от деления числа x на число y
++ Инкремент (увеличение на 1) x++ Эквивалентно x+1
-- Декремент (уменьшение на 1) x-- Эквивалентно x-1

Примеры использования:

6 + 3;    // результат 9
6 - 3;    // результат 3
6 * 3;    // результат 18
6 / 3;    // результат 2
5 % 3;    // результат 2
6++;      // результат 7
6--;      // результат 5

Можно использовать и с переменными:

x = 3;           // значение x — 3
y = 5;           // значение y — 5
z = x + y;       // значение z — 8

Возможно использование в выражениях со скобками:

4 + 5 * 2;       // результат 14
(4 + 5) * 2;     // результат 18

В арифметических операциях логические значения считаются: true — 1, false — 0:

5 + true;     // результат 6
5 + false;    // результат 5
4 * true;     // результат 4
4 * false;    // результат 0
true + true;  // результат 2
true + false; // результат 1

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

"Java" + "Script";  // результат "JavaScript"
a = "Java"; 
b = "Script"; 
a + b; // результат "JavaScript"
"Уровень" + 5; // результат "Уровень5"
"Уровень" + true; // результат "Уровеньtrue"
"1" + "2"; // результат "12"

Другие арифметические операторы со строками дают значение NaN:

"J" * 5; // результат NaN
"J" - 5; // результат NaN
"J" - "J"; // результат NaN

Если вы не знаете, то NaN — это значение переменной, когда совершается неккоректное действие, например a = 1 * "Hello! ". NaN не равен ни одному числу, даже самому себе.

Основные конструкции[править]

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

Функции[править]

JavaScript как и многие другие языки программирования построен на функциях. Синтаксис:

function <имя_функции> (<параметры>) {
    <операторы>;
    return <возвращаемое_значение>; 
}

Оператор return возвращает значение, в следующем примере это будет показано. Параметры (или аргументы) это такие переменные, значение которых мы задаём при вызове функции:

function plus(a,b) {
    return (a + b); // Мы возвращаем сумму параметров a и b. 
}
var c = plus(1,2); // Переменная c получит значение 3.

Условия[править]

Условия позволяют выполнить один или несколько операторов только при выполнении определённого условия. Синтаксис:

if(<условие>) {
    <операторы>;
}
else { // Иначе, т. е. если условие не выполнилось.
    <операторы>;
}

Циклы[править]

while (цикл с предусловием)[править]

Цикл будет продолжаться до того момента, когда условия перестанут выполняться. Синтаксис:

while(<условие>) {
    <операторы>;
}

do…while (цикл с постусловием).[править]

Цикл do…while отличается от while только тем, что условие проверяется в конце выполнения блока, соответственно он выполнится минимум 1 раз. Синтаксис:

do {
   <операторы>;
}
while(<условие>)

for (итерационный цикл, счётчик)[править]

Синтаксис:

for(var <переменная> = <начальное_значение>; <условие>; <шаг_цикла>) {
   <операторы>;
}

В циклах for создаётся отдельная переменная, задаётся условие с этой переменной, при котором будет продолжаться выполнение цикла. И при каждом выполнении производится какая-либо операция. Например:

for(var i = 0; i < 10; i++) {
   <операторы>; // повторяется 10 раз
}

Подробное разъяснение: создаётся переменная i и цикл выполняется пока i меньше или равно 10, и при каждой итерации (т.е. одном выполнении цикла) к переменной i прибавляется 1 (инкремент), соответственно цикл выполнится 10 раз.

Переключатели[править]

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

var a; 
switch(a) {
case 1: // Если a = 1
    <операторы>;
    break;
case 2: // Если a = 2
    <операторы>;
    break;
default: // остальные значения
    <операторы>;
    break;
}

case сравнивает переменную, указанную в switch(переменная). break прерывает выполнение case или default, т. е. если он будет отсутствовать при выполнении хотя бы первого case, выполнятся все последующие и defalult. default выполнится только если ни один из операторов case.

Дятел