JS | Основы кратко

Ниже представлен базовый материал по основам JavaScript. По большей части это выжимки из "Носорога" (Девид Фленаган "JavaScript. Подробное руководство"). Мне кажется это будет интересным как сознательному новичку, так и среднему программисту, который не часто работает с JS и оттого основы этого языка в памяти немного расплывчаты. Обучение JS с этой статьи начинать не стоит.

1. Символы

JS чувствителен к регистру:
online, onLine, ONLINE - три различных переменных.

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

Инструкции хоть и можно не разделять ";" но очень рекомендуется
a=1;
b=a+2;

Не стоит в инструкции делать перенос строк. Код
return
false;


Будет изменён интерпретатором на
return;
false;


2. Типы данных

  • Числа
  • Строки
  • Объекты
    • Массивы
    • Функции
    • Классы

То есть массивы, функции и классы являются специальными типами объекта.


3. Числа

JS не делает различия между целыми и вещественными числами.

Разделитель в вещественных числах — точка.

При работе с числами полезно помнить про константы Infinity — бесконечность, и NaN — "не число". Числа невозможно непосредственно сравнить с этими константами, для этого есть специальные функции ifFinite() и isNaN() соответственно.

Большинство математических функций заключено в библиотеке Math, например:
x=Math.sin(y);

Преобразование чисел:
n=123456.78;
n.toFixed(0); // 123456
n.toFixed(1) // 123456.7


4. Строки

Индекс строки начинается с нуля.

Несколько частых функций работы со строками:
s="abcde";

length=s.length; // "5" — кол-во символов в строке
last=s.charAt(s.length-1); // "e" — последний символ
sub=s.substring(1,3); // "bc" -— подстрока со 2-ого (индекс 1) элемента 2 символа
i=s.indexOf('a'); // "0" — индекс символа 'a'

Обращение к элементу строки как к элементу ассоциативного массива возможно, но не по стандартам ECMA
last=s[s.length-1];


5. Преобразование форматов

Преобразование числа в строку:
n=5;
s=n.toString(); // '5'
s=String(n); // '5'
s=n+''; // '5'

Преобразование строки в число:
s='24';
n=s-0; // 24
n=Number(s); // 24

n=s+0; // '240' - это конкатенация, а не преобразование в число!

s='24 лишние символы';
n=s-0; // NaN
n=Number(s); // NaN

s='24.5 лишние символы';
n=parseInt(s); // 24
n=parseFloat(s); // 24.5

s='лишние символы перед числом 24.5 лишние символы';
n=parseInt(s); // NaN
n=parseFloat(s); // NaN
n=parseFloat('$45.39'); // NaN

Преобразование в логическое значение:
x=Boolean(y);
или
x=!!y;

Преобразование логических значений в числа:
true -> 1
false -> 0

Преобразование чисел в логические значения:
число -> true
ноль или NaN -> false

Преобразование логических значений в строки:
true -> 'true'
false -> 'false'

Преобразование строк в логические значения:
непустая строка -> true
пустая строка -> false


6. Функции

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

При объявлении функции её имя не обязательно:
function square(x) { return x*x; }
или
var square=function (x) { return x*x; } // такие функции называются лямбда-функциями


7. Объекты

Пример создания объекта:
var point=new Object();
point.x=1;
point.y=2;

или
var point={ x: 1, y: 2 };

Пример вложенного объекта:
var rectangle =
{
point1={ x: 1, y: 2 },
point2={ x: 3, y: -3 }
}

Обращение к свойству объекта
rectangle.point1.x
где
x — свойство объека point
point1 — свойство объека rectangle
rectangle — объект

Функции объекта называются методами. Пример метода объекта:
document.write('Jac came back');

Объект может выступать в качестве ассоциативного массива
rectangle.point1.x <-> rectangle.point1['x']


8. Массивы

Индексируются с нуля.

JS не поддерживает многомерные массивы (но элементом массива может быть массив)

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

Пример создания массива:
var Arr=new Array(0); // пусто массив
var Arr=new Array(5); // массив в пятью неопределёнными элементами
var Arr=[1, 2, true, 'test',{ x: 3, y: -3 }, ['a','b','c']];

Обращение к массиву:
Arr[0] // 1
Arr[4].x // 3
Arr[5][1] // b



Татьяна