Javascript.RU

Boolean
Аннотация для списка: 

Объект для булевых значений

Введение: 

В яваскрипт есть как Boolean-объекты, так и примитивные Boolean значения.

Не смешивайте их. Объект - это объект. В частности, яваскрипт любой объект считает "true", например при неявном приведении типа в операторе if:

x = new Boolean(false);
if (x) {
  // . . . этот код будет выполнен
}

Оператор if приводит аргумент к примитивному значению, поэтому new Boolean(false) был приведен к true, т.к является объектом.

Не используйте объект Boolean для преобразования к булевому значению. Вместо этого, используйте Boolean как функцию.

x = Boolean(expression);     // предпочтительно
x = new Boolean(expression); // не используйте

Или можно проще, с использованием двойного отрицания:

x = !!expression

В современном яваскрипт-программировании new Boolean не используется.

Синтаксис: 
b = new Boolean(value)
Аргументы: 
value
исходное значение для булевого объекта
Описание конструктора, примеры создания: 

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

  • 0,
  • -0,
  • null,
  • false,
  • NaN,
  • undefined,
  • или пустая строка (""),

то объект инициализуется как false. Все остальные значения, включая объекты и строку "false" создают объект с начальным значением true.

nonstandard: 
нет
deprecated: 
нет
Вес: 
0

Array
Аннотация для списка: 

Массив пронумерованных элементов, также может служить стеком или очередью

Введение: 

Массив пронумерованных элементов, также может служить стеком или очередью. Для ассоциативных массивов используйте Object.

Синтаксис: 
/* обычный синтаксис */ var array = [ elem0, elem1, elem2, ... ] var empty = [] /* Синтаксис с new Array() */ var array = new Array( elem0, elem1, elem2, ...) var empty = new Array() /* Редкий синтаксис: аргумент new Array - одно число. При этом создается массив заданной длины, все значения в котором undefined */ var array = new Array(10)
Аргументы: 
elem0, elem1, ...
  • Если ни один из параметров elem0, elem1, ... не указан, то инициализируется пустой массив.
  • Если указан лишь один числовой параметр elem0 и массив объявлен через new Array, то будет инициализирован пустой массив длины, равной данному числу. При этом все элементы являются undefined.
  • В ином случае создается массив из перечисленных элементов.
Описание конструктора, примеры создания: 

Объект Array предоставляет функционал

  1. Массива с любыми числовыми индексами (разреженного)
  2. Стека/очереди

Для задания массива, как правило, используется синтаксис с квадратными скобками. Объявление через new Array тоже возможно, но почти не используется.

Пример: Создать пустой массив
var arr = []
Пример: добавить элемент в конец
arr[arr.length] = 5  /* или arr.push(5) */
Пример: Создать массив из разных элементов
var arr = [ 4, "test", , false, [0,1] ]

alert(arr[1]) // => "test"
alert(arr[2]) // => undefined
alert(arr[3]) // => false
alert(arr[4][1]) // => 1

Можно добавить объект под любым индексом, даже превосходящим текущую длину массива. При этом массив хранит (и потребляет память) только те элементы, которые установлены.

В примере ниже массив будет хранить два элемента: номер 1 и номер 999.

Пример: разреженный массив
var arr = []
arr[1] = 5
arr[999] = 6

alert(arr[0]) // => undefined, такого значения нет
alert(arr.length) // => 1000 : последний индекс+1

Ассоциативные массивы

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

Для ассоциативных массивов в javascript применяется Object.

Многомерные массивы

Для многомерных массивов в javascript нет кросс-браузерного синтаксиса.

Обычно используется массив массивов, например:

// 3 в ширину 3 в высоту
// каждый подмассив - колонка
var matrix = [ [1,2,3], [4,5,6], [7,8,9] ]

alert(matrix[1][1])  // 5
nonstandard: 
нет
deprecated: 
нет
Вес: 
0

String
Аннотация для списка: 

Базовый объект для строк. Позволяет управлять текстовыми строками, форматировать их и выполнять поиск подстрок.

Синтаксис: 
a = 'my string' b = new String(object) // синтаксис устарел и не используется c = String(object)
Аргументы: 

string - Необязательный. Любая группа знаков Юникода.

Описание конструктора, примеры создания: 

Объекты String, как правило, создаются неявно с помощью строковых литералов.

// кавычки любые - без разницы
var str = "string literal"

В строковых литералах можно использовать escape-последовательности для представления особых знаков, которые нельзя напрямую использовать в строках, например символа перевода строки или знаков Юникода. При компиляции сценария каждая escape-последовательность в строковом литерале преобразуется в знаки, которые она представляет.

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

var str = "\u1234"

Объекты String, заданные через кавычки (и называемые "примитивными" строками), немного отличаются от объектов String, созданных с помощью оператора new. Так, например, типом (typeof) данных объекта, созданного при помощи new, является 'object', а не 'string'. И такому объекту можно напрямую назначать дополнительные свойства и методы. В остальном - интерпретатор автоматически превращает примитивные строки в объекты.

"12345".length // 5

Доступ к символам

Доступ к символам осуществляется при помощи метода String#charAt

return 'cat'.charAt(1); // возвратит "a"

Также существует отсутствующий в стандарте ECMA-262 способ - обращение к строке как к массиву:

var str = 'cat'
return str[1] // "a"

В отличие от языков C/PHP/и т.п., однажды созданную строку нельзя изменить: символы можно только считывать, но не менять.

Для изменения строковой переменной применяется присваивание измененной строки:

str = "строка"
str = str.charAt(4) + str.charAt(5) + str.charAt(6) // "ока"

Сравнение строк

Для сравнения строк используются обычные операторы < >.

nonstandard: 
нет
deprecated: 
нет
Вес: 
0

RegExp
Аннотация для списка: 

Позволяет работать с регулярными выражениями.

Введение: 
Синтаксис: 
// полная форма записи var expr = new RegExp(pattern [, flags]); // сокращенная форма записи (литеральный формат) var expr = /pattern/flags;
Аргументы: 
pattern
Шаблон поиска (текст регулярного выражения).
flags
Способы поиска по шаблону:

  • g — глобальный поиск (обрабатываются все совпадения с шаблоном поиска);
  • i — не различать строчные и заглавные буквы;
  • m — многострочный поиск.

Порядок указания флагов не имеет значения.

Описание конструктора, примеры создания: 

Когда регулярное выражение создается при помощи конструктора new RegExp(…), необходимо помнить, что обратные слеши (\) должны экранироваться, например:

var expr = new RegExp('\\w', 'ig');

При использовании литерального формата, этого делать не нужно:

var expr = /\w/gi;

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

Виды символов

В регулярных выражениях различают следующие виды символов:

Обычные символы

  • A..z — английские буквы от A до z, строчные и заглавные;
  • 0..9 — цифры;
  • { } — фигурные скобки, кроме случаев, когда они составляют группу вида {n,m} (где n и m — числа) и её вариации;
  • = — равно;
  • < — меньше;
  • > — больше;
  • - — минус;
  • , — запятая;
  • и др.
Специальные символы
  • ( ) — круглые скобки;
  • [ ] — квадратные скобки;
  • \ — обраный слеш;
  • . — точка;
  • ^ — степень;
  • $ — знак доллара;
  • | — вертикальная черта;
  • ? — вопросительный знак;
  • + — плюс.

Формирование регулярного выражения

При формировании шаблона поиска используется близкий к классическому PCRE синтаксис.

Спецсимволы в регулярном выражении

Свернуть/Развернуть таблицу

Символ Значение
\ Для обычных символов - делает их специальными. Например, выражение /s/ ищет просто символ 's'. А если поставить \ перед s, то /\s/ уже обозначает пробельный символ.И наоборот, если символ специальный, например *, то \ сделает его просто обычным символом "звездочка". Например, /a*/ ищет 0 или больше подряд идущих символов 'a'. Чтобы найти а со звездочкой 'a*' - поставим \ перед спец. символом: /a\*/.
^ Обозначает начало входных данных. Если установлен флаг многострочного поиска ("m"), то также сработает при начале новой строки.Например, /^A/ не найдет 'A' в "an A", но найдет первое 'A' в "An A."
$ Обозначает конец входных данных. Если установлен флаг многострочного поиска, то также сработает в конце строки.Например, /t$/ не найдет 't' в "eater", но найдет - в "eat".
* Обозначает повторение 0 или более раз. Например, /bo*/ найдет 'boooo' в "A ghost booooed" и 'b' в "A bird warbled", но ничего не найдет в "A goat grunted".
+ Обозначает повторение 1 или более раз. Эквивалентно {1,}. Например, /a+/ найдет 'a' в "candy" и все 'a' в "caaaaaaandy".
? Обозначает, что элемент может как присутствовать, так и отсутствовать. Например, /e?le?/ найдет 'el' в "angel" и 'le' в "angle."Если используется сразу после одного из квантификаторов *, +, ?, или {}, то задает "нежадный" поиск (повторение минимально возможное количество раз, до ближайшего следующего элемента паттерна), в противоположность "жадному" режиму по умолчанию, при котором количество повторений максимально, даже если следующий элемент паттерна тоже подходит.Кроме того, ? используется в предпросмотре, который описан в таблице под (?=), (?!), и (?: ).
. (Десятичная точка) обозначает любой символ, кроме перевода строки: \n \r \u2028 or \u2029. (можно использовать [\s\S] для поиска любого символа, включая переводы строк). Например, /.n/ найдет 'an' и 'on' в "nay, an apple is on the tree", но не 'nay'.
(x) Находит x и запоминает. Это называется "запоминающие скобки". Например, /(foo)/ найдет и запомнит 'foo' в "foo bar." Найденная подстрока хранится в массиве-результате поиска или в предопределенных свойствах объекта RegExp: $1, ..., $9.Кроме того, скобки объединяют то, что в них находится, в единый элемент паттерна. Например, (abc)* - повторение abc 0 и более раз.
(?:x) Находит x, но не запоминает найденное. Это называется "незапоминающие скобки". Найденная подстрока не сохраняется в массиве результатов и свойствах RegExp.Как и все скобки, объединяют находящееся в них в единый подпаттерн.
x(?=y) Находит x, только если за x следует y. Например, /Jack(?=Sprat)/ найдет 'Jack', только если за ним следует 'Sprat'. /Jack(?=Sprat|Frost)/ найдет 'Jack', только если за ним следует 'Sprat' или 'Frost'. Однако, ни 'Sprat' ни 'Frost' не войдут в результат поиска.
x(?!y) Находит x, только если за x не следует y. Например, /\d+(?!\.)/ найдет число, только если за ним не следует десятичная точка. /\d+(?!\.)/.exec("3.141") найдет 141, но не 3.141.
x|y Находит x или y. Например, /green|red/ найдет 'green' в "green apple" и 'red' в "red apple."
{n} Где n - положительное целое число. Находит ровно n повторений предшествующего элемента. Например, /a{2}/ не найдет 'a' в "candy," но найдет оба a в "caandy," и первые два a в "caaandy."
{n,} Где n - положительное целое число. Находит n и более повторений элемента. Например, /a{2,} не найдет 'a' в "candy", но найдет все 'a' в "caandy" и в "caaaaaaandy."
{n,m} Где n и m - положительные целые числа. Находят от n до m повторений элемента.
[xyz] Набор символов. Находит любой из перечисленных символов. Вы можете указать промежуток, используя тире. Например, [abcd] - то же самое, что [a-d]. Найдет 'b' в "brisket" и 'c' в "ache".
[^xyz] Любой символ, кроме указанных в наборе. Вы также можете указать промежуток. Например, [^abc] - то же самое, что [^a-c]. Найдет 'r' в "brisket" и 'h' в "chop."
[\b] Находит символ backspace. (Не путать с \b.)
\b Находит границу слов (латинских), например пробел. (Не путать с [\b]). Например, /\bn\w/ найдет 'no' в "noonday"; /\wy\b/ найдет 'ly' в "possibly yesterday."
\B Обозначает не границу слов. Например, /\w\Bn/ найдет 'on' в "noonday", а /y\B\w/ найдет 'ye' в "possibly yesterday."
\cX Где X - буква от A до Z. Обозначает контрольный символ в строке. Например, /\cM/ обозначает символ Ctrl-M.
\d находит цифру из любого алфавита (у нас же юникод). Используйте [0-9], чтобы найти только обычные цифры. Например, /\d/ или /[0-9]/ найдет '2' в "B2 is the suite number."
\D Найдет нецифровой символ (все алфавиты). [^0-9] - эквивалент для обычных цифр. Например, /\D/ или /[^0-9]/ найдет 'B' в "B2 is the suite number."
\f,\r,\n Соответствующие спецсимволы form-feed, line-feed, перевод строки.
\s Найдет любой пробельный символ, включая пробел, табуляцию, переводы строки и другие юникодные пробельные символы. Например, /\s\w*/ найдет ' bar' в "foo bar."
\S Найдет любой символ, кроме пробельного. Например, /\S\w*/ найдет 'foo' в "foo bar."
\t Символ табуляции.
\v Символ вертикальной табуляции.
\w Найдет любой словесный (латинский алфавит) символ, включая буквы, цифры и знак подчеркивания. Эквивалентно [A-Za-z0-9_]. Например, /\w/ найдет 'a' в "apple," '5' в "$5.28," и '3' в "3D."
\W Найдет любой не-(лат.)словесный символ. Эквивалентно [^A-Za-z0-9_]. Например, /\W/ и /[^$A-Za-z0-9_]/ одинаково найдут '%' в "50%."
\n где n - целое число. Обратная ссылка на n-ю запомненную скобками подстроку. Например, /apple(,)\sorange\1/ найдет 'apple, orange,' в "apple, orange, cherry, peach.". За таблицей есть более полный пример.
\0 Найдет символ NUL. Не добавляйте в конец другие цифры.
\xhh Найдет символ с кодом hh (2 шестнадцатиричных цифры)
\uhhhh Найдет символ с кодом hhhh (4 шестнадцатиричных цифры).
Пример: изменение формата строки
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
alert(newstr); // "Smith, John"
nonstandard: 
нет
deprecated: 
нет
Вес: 
0

Object
Аннотация для списка: 

Базовый объект javascript

Введение: 

В яваскрипт Object предоставляет общие методы для всех яваскрипт-объектов.

Кроме того, он используется как ассоциативный массив. Более подробно про Object можно почитать в разделе Объекты, ООП.

Синтаксис: 
obj = new Object( [value] ) // или, более часто obj = { key1: val1, key2: val2, ... }
Аргументы: 
keyN
Ключи ассоциативного массива
valN
Значения ассоциативного массива
Описание конструктора, примеры создания: 

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

var man = { 
    lastname: "Иванов",
    firstname: "Василий",  
    middlename: "Петрович"
}

man - имя переменной, lastname, firstname и middlename - ключи массива
Иванов, Василий, Петрович - значения элементов массива
По ключу можно обратиться к конкретному элементу.

Более подробно узнать про ассоциативные массивы, объекты и ООП вы можете в разделе учебника: Объекты, ООП.

nonstandard: 
нет
deprecated: 
нет
Вес: 
0

Date
Аннотация для списка: 

Функции для работы с датой и временем

Введение: 

Дата измеряется в миллисекундах, начиная от полуночи 01 января 1970 года GMT+0. День содержит 86,400,000 миллисекунд.

Объект Date ведет себя одинаково на всех платформах.

Date поддерживает как методы для работы в зоне UTC (GMT+0), так и методы для работы с местным временем.
Местное время - это то, которое установлено на компьютере, на котором выполняется яваскрипт.

Синтаксис: 
dateObj = new Date() dateObj = new Date(dateVal) dateObj = new Date(year, month, date[, hours, minutes, seconds, ms] )
Аргументы: 
dateVal
  • Если параметр является числовым, то он интерпретируется как количество миллисекунд от 1-Янв-1970 00:00.
  • Если строкой, то она разбирается и интерпретируется как дата по стандартным правилам Date.parse.
year
Год в формате YYYY.
month
Месяц от 0 (Янв) до 11 (Дек).
date
День месяца от 1 до 31.
hours
Параметр должен быть указан, если указан параметр minutes. Устанавливает кол-во часов от 0 до 23.
minutes
Параметр должен быть указан, если указан параметр seconds. Устанавливает количество минут: от 0 до 59.
seconds
Параметр должен быть указан, если указан параметр ms. Устанавливает количество секунд: от 0 до 59.
ms
Количество миллисекунд: от 0 до 999.
Описание конструктора, примеры создания: 

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

Пример: получить текущую дату
var today = new Date()

При вызове с одним аргументом - строкой, строка разбирается и интерпретируется как дата, так же, как и в методе Date.parse.

Пример: создать дату из строки
var date = new Date("21 May 1958 10:12") // используется редко

При объявлении с несколькими аргументами, отсутствующие аргументы автоматически считаются равными 0.

Пример: объявление даты с несколькими аргументами
new Date(1)
// Thu Jan 01 1970 03:00:00 GMT+0300 (Russian Standard Time)
new Date(1,2)
// Fri Mar 01 1901 00:00:00 GMT+0300 (Russian Standard Time)
new Date(1,2,3)
// Sun Mar 03 1901 00:00:00 GMT+0300 (Russian Standard Time)
new Date(1,2,3,4)
// Sun Mar 03 1901 04:00:00 GMT+0300 (Russian Standard Time)
new Date(1,2,3,4,5)
//Sun Mar 03 1901 04:05:00 GMT+0300 (Russian Standard Time)
new Date(1,2,3,4,5,6)
//Sun Mar 03 1901 04:05:06 GMT+0300 (Russian Standard Time)
nonstandard: 
нет
deprecated: 
нет
Вес: 
0

 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum