Об этом справочнике

Этот CHM-файл является оффлайн-вариантом справочника http://javascript.ru/manual.
Сборка от 15.06.2009.
В него вошли все материалы, за исключением комментариев, которые вы можете оставлять на сайте.

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

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

Большая просьба - не перекопировать этот файл куда попало, а давать ссылку на оригинальный источник: http://javascript.ru/manual.

Искренне Ваш,
Илья Кантор.


Справочник по Javascript

http://javascript.ru/manual
Сборка от 15.06.2009.

Справочник

Добро пожаловать в справочник по современному javascript!

Информация также доступна напрямую по ссылкам: http://javascript.ru/Array/slice.

Скачать оффлайн-версию справочника в формате CHM

Объекты

Кратко | Подробно

Стандартные объекты

  • Array

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

  • Boolean

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

  • Date

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

  • Error

    объект для представления ошибок

  • EvalError

    Ошибка при выполнении функции eval

  • Function

    Каждая функция в яваскрипт является объектом класса Function.

  • Math

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

  • Number

    Объект для работы с числами

  • Object

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

  • RangeError

    Ошибка, когда число не лежит в нужном диапазоне

  • ReferenceError

    Ошибку при ссылке на несуществующую переменную

  • RegExp

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

  • String

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

  • SyntaxError

    Ошибка при интерпретации синтаксически неверного кода

  • TypeError

    Ошибка в типе значения

  • URIError

    Ошибка при некорректном URI

Объекты браузера

  • window

    Два в одном: глобальный объект и окно браузера

Глобальные методы

Кратко | Подробно
  • alert

    Выводит модальное окно с сообщением

  • clearInterval

    Останавливает выполнение кода, заданное setInterval

  • clearTimeout

    Отменяет выполнение кода, заданное setTimeout

  • confirm

    Выводит сообщение в окне с двумя кнопками: "ОК" и "ОТМЕНА" и возвращает выбор посетителя

  • decodeURI

    Раскодирует URI, закодированный при помощи encodeURI

  • decodeURIComponent

    Раскодирует URI, закодированный при помощи encodeURIComponent

  • encodeURI

    Кодирует URI, заменяя каждое вхождение определенных символов на escape-последовательности, представляющие символ в кодировке UTF-8.

  • encodeURIComponent

    Кодирует компоненту URI, заменяя определенные символы на соответствующие UTF-8 escape-последовательности

  • eval

    Выполняет строку javascript-кода без привязки к конкретному объекту.

  • isFinite

    возвращает, является ли аргумент конечным числом

  • isNaN

    Проверяет, является ли аргумент NaN

  • parseFloat

    преобразует строковой аргумент в число с плавающей точкой

  • parseInt

    преобразует строковой аргумент в целое число нужной системы счисления

  • prompt

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

  • setInterval

    Выполняет код или функцию через указанный интервал времени

  • setTimeout

    Выполняет код или функцию после указанной задержки

Глобальные свойства

Кратко | Подробно
  • arguments

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

  • Infinity

    Бесконечность

  • NaN

    Не-Числовое значение

  • undefined

    Обозначает неопределенное значение

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

Кратко | Подробно
  • break

    Завершает текущий цикл или конструкции switch и label и передает управление на следующий вызов

  • continue

    Прекращает текущую итерацию цикла и продолжает выполнение со следующей итерации

  • do..while

    Задает цикл с проверкой условия после каждой итерации

  • for

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

  • for..in

    Перебрать свойства объекта, для каждого свойства выполнить заданный код

  • function

    Объявить функцию

  • if

    Выполняет тот или иной блок кода в зависимости от того, верно ли условие

  • label

    Указать идентификатор для использования в break и continue

  • return

    Возвратить результат работы функции

  • switch

    Сравнивает значение выражения по различными вариантами и при совпадении выполняет соответствующий код

  • throw

    Инициировать("бросить") исключение

  • try..catch

    Ловить все исключения, выпадающие из блока кода

  • var

    Объявить переменную (или несколько) в текущей области видимости

  • while

    Задает цикл, который выполняется до тех пор, пока условие верно. Условие проверяется перед каждой итерацией.

  • with

    Добавить новую область видимости

  • Блок

    Группировка javascript-вызовов внутри фигурных скобок

Операторы

Кратко | Подробно
  • delete
  • function
  • in
  • instanceof
  • new
  • this
  • typeof
  • void
  • Аксессоры

    object.property и object["property"]

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

    +, -, *, /, %, ++, --

  • Запятая

    ,

  • Логические операторы

    &&, ||, !

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

    =, +=, -=, *=, /=, >>=, <<=, >>>=, &=, |=, ^=

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

    ==, !=, ===, !==, >, >=, <, <=

  • Побитовые операторы

    &, |, ^, ~, <<, >>, >>>

  • Строковые операторы

    +, +=

  • Условный оператор

    condition ? ifTrue : ifFalse


Справочник: Объекты

http://javascript.ru/manual/object

Объекты

Кратко | Подробно

Стандартные объекты

  • Array

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

  • Boolean

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

  • Date

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

  • Error

    объект для представления ошибок

  • EvalError

    Ошибка при выполнении функции eval

  • Function

    Каждая функция в яваскрипт является объектом класса Function.

  • Math

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

  • Number

    Объект для работы с числами

  • Object

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

  • RangeError

    Ошибка, когда число не лежит в нужном диапазоне

  • ReferenceError

    Ошибку при ссылке на несуществующую переменную

  • RegExp

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

  • String

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

  • SyntaxError

    Ошибка при интерпретации синтаксически неверного кода

  • TypeError

    Ошибка в типе значения

  • URIError

    Ошибка при некорректном URI

Объекты браузера

  • window

    Два в одном: глобальный объект и окно браузера


Array

Создание

Выделить все
/* обычный синтаксис */
var array = [ elem0, elem1, elem2, ... ]
var empty = []

/* Синтаксис с new Array() */
var array = new Array( elem0, elem1, elem2, ...)
var empty = new Array()

/* Редкий синтаксис: аргумент new Array - одно число */
var array = new Array(10)

Аргументы

elem0, elem1, ...
  • Если ни один из параметров elem0, elem1, ... не указан, то инициализируется пустой массив.
  • Если указан лишь один числовой параметр elem0 и массив объявлен через new Array, то будет инициализирован пустой массив длины, равной данному числу. При этом все элементы являются undefined.
  • В ином случае создается массив из перечисленных элементов.

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

Описание, примеры

Объект 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

Методы

pop
Удаляет последний элемент массива и возвращает урезанный массив
push
Добавить элемент в конец массива
shift
Удаляет первый элемент массива и возвращает удалённый элемент.
unshift
Добавляет указанные элементы в начало массива и возвращает новую длину массива.
sort
Сортирует элементы массива и возвращает отсортированный массив.
slice
Возвращает подмассив (часть исходного массива).
reverse
Меняет порядок следования элементов в массиве на обратный
join
Возвращает строку, состоящую из всех элементов массива, соединённых между собой строкой-аргументом
concat
возвращает новый массив, составленный из текущего объекта и аргументов
splice
Удаляет элементы из массива и, при необходимости, добавляет новые элементы на их места. Возвращает удалённые элементы в виде массива.

Свойства

index
Псевдо-свойство массива, созданного в результате сравнения на соответствие регулярному выражению. Для такого массива данное свойство содержит индекс найденного соответствия в исследуемой строке.
input
Псевдо-свойство массива, созданного в результате сравнения на соответствие регулярному выражению.

Для такого массива данное свойство содержит строку, над которой производили сравнение.

length
Длина массива: число, на единицу превосходящее максимальный индекс массива

См. также

  • Массивы /Статья/
  • Встроенные объекты ECMAScript /Стандарт языка/


pop

Синтаксис

arrayObj.pop()

Аргументы

Описание, примеры

Этот метод изменяет исходный массив.

Пример:
Выделить все
myFish = ["angel", "clown", "mandarin", "surgeon"];
popped = myFish.pop();

// теперь popped = "surgeon"
// myFish = ["angel", "clown", "mandarin"]

См. также

  • push /Метод/
  • shift /Метод/
  • unshift /Метод/


push

Синтаксис

array.push( elem1, elem2, ... )

Аргументы

elem1, elem2, ...
Эти элементы будут добавлены в конец массива

Описание, примеры

Метод push полезен для добавления значений в массив.

Он добавляет элементы, начиная с текущей длины length и возвращает новую, увеличенную длину массива.

Пример: добавление двух элементов
Выделить все
// array.length = 2
var array = [ "one", "two" ]

// добавить элементы "three", "four"
var pushed = array.push("three", "four")

// теперь array = [ "one", "two", "three", "four" ]
// array.length = 4
// pushed = 4

См. также

  • pop /Метод/
  • shift /Метод/
  • unshift /Метод/


shift

Синтаксис

var elem = arrayObj.shift()

Аргументы

Описание, примеры

Удаляет элемент с индексом 0 и сдвигает остальные элементы на один вниз. Возвращает удаленный элемент

Пример:
Выделить все
var arr = ["мой","маленький", "массив"]

var my = arr.shift() // => "мой"
alert(arr[0]) // => "маленький"

// теперь arr = ["маленький", "массив"]

См. также

  • pop /Метод/
  • push /Метод/
  • unshift /Метод/


unshift

Синтаксис

arrayObj.unshift( [elem1[, elem2[, ...[, elemN]]]] )

Аргументы

elem1, elem2, ..., elemN
Добавляемые в начало массива элементы. Добавленные элементы сохранят порядок следования.

Описание, примеры

Данный метод изменяет исходный массив. Добавляет в него аргументы и возвращает получившуюся длину.

Пример:
var arr = "a", "b"
unshifted = arr.unshift(-2, -1);
alert("myFish after: " + var ); // [ -2, -1, "a", "b"]
alert("New length: " + unshifted); // 4

См. также

  • pop /Метод/
  • push /Метод/
  • shift /Метод/


sort

Синтаксис

arrayObj.sort( [sortFunction] )

Аргументы

sortFunction
Необязательный параметр - функция сортировки.
  • Если указана функция, то элементы массива будут отсортированы согласно значениям, возвращаемых функцией. Условия на функцию можно записать следующим образом:
    Выделить все
    function sortFunction(a, b){
  if(a меньше, чем b по некоторому критерию)
     return -1 // Или любое число, меньшее нуля
  if(a больше, чем b по некоторому критерию)
     return 1  // Или любое число, большее нуля
  // в случае а = b вернуть 0
  return 0
}
  • Если параметр не указан, массив будет отсортирован в лексикографическом порядке (возрастающий порядок следования символов в таблице ASCII).

Описание, примеры

Данный метод изменяет исходный массив. Получившийся массив также возвращается в качестве результата.

Пример:
Выделить все
arr = [1,-1, 0]
a = arr.sort()

// => arr = [ -1, 0, 1 ]

alert(a == arr) // => true, это тот же сортированный массив

См. также

  • reverse /Метод/


slice

Синтаксис

arrayObj.slice( start[, end] )

Аргументы

start
Индекс элемента в массиве, с которого будет начинаться новый массив.
end
Необязательный параметр. Индекс элемента в массиве, на котором новый массив завершится. При этом последним в новом массиве будет элемент с индексом end-1
  • Если start отрицателен, то он будет трактоваться как arrayObj.length+start (т.е. start'ый элемент с конца массива).
  • Если end отрицателен, то он будет трактоваться как arrayObj.length+end (т.е. end'ый элемент с конца массива).
  • Если второй параметр не указан, то экстракция продолжится до конца массива. Если end < start, то будет создан пустой массив.

Описание, примеры

Данный метод не изменяет исходный массив, а просто возвращает его часть.

Пример: Элементы из середины
Выделить все
var arr = [ 1, 2, 3, 4, 5 ]

arr.slice(2) // => [3, 4, 5]

arr.slice(1,4) // => [2,3,4]

arr.slice(2,3) // => [3]
Пример: Отсчет с конца
Выделить все
arr = [1,2,3,4,5]

arr.slice(-2) // => [4,5]
arr.slice(arr.length - 2) // то же самое

arr.slice(-3,-1) // [3,4]
arr.slice(arr.length-3, arr.length-1) // то же самое


reverse

Синтаксис

arrayObj.reverse()

Аргументы

Описание, примеры

Данный метод изменяет исходный массив.
После его применения порядок элементов в массиве меняется на обратный.

Он возвращает измененный массив.

Пример:
Выделить все
arr = [1,2,3]

a = arr.reverse() // [ 3, 2, 1]

alert(arr == a) // true

См. также

  • sort /Метод/


join

Синтаксис

arrayObj.join( [glue] )

Аргументы

glue
Строковый аргумент, с помощью которого будут соединены в строку все элементы массива. Если аргумент не задан, элементы будут соединены запятыми.

Описание, примеры

Пример:
var arr = [ 1, 2 , 3 ]
arr.join('+')  // "1+2+3"
arr.join()  // "1,2,3"

См. также

  • split /Метод/


concat

Синтаксис

var newArray = array.concat(value1, value2, ..., valueN)

Аргументы

value1, value2, ...
Массивы или значения для присоединения

Описание, примеры

Создает новый массив.

Копирует в него текущий объект array и значения value1, value2, ...

При этом, если значение является массивом, то в результат попадут его элементы (в отличие от push), а не сам аргумент.

Метод concat ничего не меняет. Вместо этого он просто возвращает комбинацию "в один уровень глубиной" текущего объекта и аргументов.

Элементы аргументов-массивов добавляются в результат следующим образом:

Объекты
Копируется ссылка на объект. Таким образом, старый и новый массив ссылаются на один и тот же объект. Если объект меняется - эти изменения видны и в новом и в старом массивах.
Элементарные значения
Копируются "как есть"
Пример: объединение двух массивов
Выделить все
var alpha = ["a", "b", "c"];
var numeric = [1, 2, 3];

// создает массив ["a", "b", "c", 1, 2, 3];
var alphaNumeric = alpha.concat(numeric);
Пример: объединение трех массивов
Выделить все
var num1 = [1, 2, 3];
var num2 = [4, 5, 6];
var num3 = [7, 8, 9];

// создает массив [1, 2, 3, 4, 5, 6, 7, 8, 9];
var nums = num1.concat(num2, num3);
Пример: добавление значений в массив
var alpha = ['a', 'b', 'c'];

// создает массив ["a", "b", "c", 1, 2, 3]
var alphaNumeric = alpha.concat(1, [2, 3]);


splice

Синтаксис

arrayObj.splice( start, deleteCount, [elem1[, elem2[, ...[, elemN]]]] )

Аргументы

start
Индекс в массиве, с которого начинать удаление.
deleteCount
Кол-во элементов, которое требуется удалить, начиная с индекса start.
  • IE: если этот параметр не указан, то ни одни элемент не будет удалён.
  • Firefox: если этот параметр не указан, то будут удалены все элементы, начиная с индекса start.
  • Opera: (исследовано в версии 9.61) если этот параметр не указан, то будут удалён 1 элемент, имеющий индекс start+1. В этом же случае вместо удалённого элемента будет возвращена пустая строка.
elem1, elem2, ..., elemN
Добавляемые элементы в массив. Добавление начинается с позиции start.

Описание, примеры

Пожалуй, самый комплексный метод для работы с массивом.

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

При этом можно свести к нулю количество удаляемых элементов - тогда это будет просто добавление.

И можно не добавлять элементов - тогда это будет просто удаление.

Метод возвращает массив из удаленных элементов.

Пример: Удаление
Выделить все
arr = [ "a", "b", "c", "d", "e" ]
removed = arr.splice(1,2)

// removed = [ "b", "c"] (2 элемента с arr[1])
// arr = ["a", "d", "e"] (те что остались)
Пример: Удаление одного элемента
arr = [ "a", "b", "c", "d", "e" ]
// удалим с индекса 2 один элемент
arr.splice(2,1)
// arr = ["a", "b", "d", "e"]
Пример: Добавление элементов
Выделить все
arr = [ "a", "b", "c", "d", "e" ]
// начиная с индекса 2 удалим 0 элементов
// и добавим "b+"
arr.splice(2,0,"b+")
// arr = ["a", "b", "b+", "c", "d", "e"]
Пример: С конца
arr = [ "a", "b", "c", "d", "e" ]
// удалим с индекса 1 начиная с конца 1 элемент
arr.splice(-1,1)


index

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

Описание, примеры

Пример:
Выделить все
// Выводит рекурсивно строковый индекс
// найденного соответствия-подстроки и строку

var src = "This is a test string.";
var re = /\w+/g;
var arr;
while ( (arr = re.exec(src)) != null ) {
    alert( arr.index + "-" + arr);
}

См. также

  • RegExp /Объект/
  • Регулярные выражения /Статья/


input

Псевдо-свойство массива, созданного в результате сравнения на соответствие регулярному выражению.

Для такого массива данное свойство содержит строку, над которой производили сравнение.

Описание, примеры

Пример:
Выделить все
var src = "This is a test string.";
var re = /\w+/g;
var arr;
arr = re.exec(src)
alert(arr.input) // "This is a test string"

См. также

  • RegExp /Объект/
  • Регулярные выражения /Статья/


length

Длина массива: число, на единицу превосходящее максимальный индекс массива

Описание, примеры

Это свойство обладает следующими особенностями.

  • Свойство length никак не связано с максимальным кол-вом элементов (можно добавить в пустой массив элемент с индексом 10 и это свойство примет значение 11).
  • Свойство доступно для записи. Если назначить ему длину, меньшую чем индекс последнего элемента, то массив будет урезан. Если же указать бОльшее число, то массив, наоборот, будет расширен за счёт пустых элементов.
  • Наблюдаются несоответствия в значениях этого свойства для IE и Gecko версий для массивов, содержащих завершающие пустые элементы.
Пример: Обход массива
var numbers = [1,2,3,4,5];
for (var i = 0; i < numbers.length; i++) {
  alert(numbers[i])
}
Пример: Укорачивание массива
var numbers = [1,2,3,4,5];
numbers.length=3
// numbers теперь [1,2,3]
Пример: Добавление в конец массива
var numbers = [1,2];
numbers[numbers.length]=3
// numbers теперь [1,2,3]


Boolean

Создание

b = new Boolean(value)

Аргументы

value
исходное значение для булевого объекта

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

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

Пример: new Boolean(false) считается true
x = new Boolean(false);
if (x) {
  // . . . этот код будет выполнен
}

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

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

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

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

x = !!expression

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

Описание, примеры

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

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

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

См. также

  • Базовые типы: Строки, Числа, Boolean /Статья/


Об этом справочнике

Нет своих свойств

У этого объекта нет своих, не унаследованных, свойств или методов.


Date

Создание

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.

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

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

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

Описание, примеры

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

Пример: получить текущую дату
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)

Методы

Date.UTC
Вычисляет количество миллисекунд, истекших с полуночи 1 января 1970 года до указанной даты, используя время в диапазоне формата UTC.
Date.parse
Анализирует строку, содержащую дату, и возвращает количество миллисекунд, прошедших с полуночи 1 января 1970 г. UTC до указанной даты.
toLocaleString
Возвращает дату, преобразованную в строковую величину в соответствии с текущими локальными установками.
getDate
Возвращает день месяца для указанной даты (согласно местному времени)
getDay
Возвращает день недели для указанной даты (согласно местному времени)
getFullYear
Возвращает год для указанной даты (согласно местному времени)
getMilliseconds
Возвращает количество миллисекунд для указанной даты (согласно местному времени)
getMinutes
Возвращает значение минут для указанной даты (согласно местному времени)
getMonth
Возвращает месяц для указанной даты (согласно местному времени)
getSeconds
Возвращает значение секунд для указанной даты (согласно местному времени)
getTime
Возвращает численное значение для указанной даты (согласно универсальному времени)
getTimezoneOffset
Возвращает смещение универсального времени относительно местного в минутах
getUTCDate
Возвращает день месяца для указанной даты (согласно универсальному времени)
getUTCDay
Возвращает день недели для указанной даты (согласно универсальному времени)
getUTCHours
Возвращает час для указанной даты (согласно универсальному времени)
getHours
Возвращает час для указанной даты (согласно местному времени)
getUTCMilliseconds
Возвращает количество миллисекунд для указанной даты (согласно универсальному времени)
getUTCMonth
Возвращает месяц для указанной даты (согласно универсальному времени)
getUTCMinutes
Возвращает значение минут для указанной даты (согласно универсальному времени)
getUTCSeconds
Возвращает значение секунд для указанной даты (согласно универсальному времени)
getYear
Возвращает сокращённое значение года для указанной даты (согласно местному времени)
setSeconds
Устанавливает для указанной даты значение секунд равным указанному (согласно местному времени)
setFullYear
Устанавливает для указанной даты год равным указанному значению (согласно местному времени)
setMilliseconds
Устанавливает для указанной даты значение миллисекунд равным указанному (согласно местному времени)
setTime
Устанавливает численное значение для указанной даты в миллисекундах, прошедших после полночи 1 января 1970 года (по универсальному времени)
setYear
Устанавливает для указанной даты год равным указанному значению (согласно местному времени)
setDate
Устанавливает день месяца равным указанному значению (согласно местному времени)
setUTCDate
Устанавливает день месяца равным указанному значению (согласно местному времени)
setUTCHours
Устанавливает для указанной даты час равным указанному значению (согласно универсальному времени)
setHours
Устанавливает для указанной даты час равным указанному значению (согласно местному времени)
setUTCMilliseconds
Устанавливает для указанной даты значение миллисекунд равным указанному (согласно местному времени)
setUTCMinutes
Устанавливает для указанной даты значение минут равным указанному (согласно универсальному времени)
setMinutes
Устанавливает для указанной даты значение минут равным указанному (согласно местному времени)
setMonth
Устанавливает для указанной даты месяц равным указанному значению (согласно местному времени)
setUTCSeconds
Устанавливает для указанной даты значение секунд равным указанному (согласно местному времени)
setUTCFullYear
Устанавливает для указанной даты год равным указанному значению (согласно универсальному времени)
setUTCMonth
Устанавливает для указанной даты месяц равным указанному значению (согласно местному времени)
toGMTString
Преобразовывает дату в строку (согласно времени по Гринвичу)
toLocaleFormat
Преобразовывает дату в строку согласно текущим языковым настройкам и указанному формату
toLocaleTimeString
Возвращает информацию о дате в виде текстовой строки согласно языковым настройкам системы
toLocaleDateString
Возвращает информацию о дате в виде текстовой строки согласно языковым настройкам системы
toString
Возвращает строку, представляющую текущий объект Date.
toTimeString
Возвращает информацию о дате в виде текстовой строки в американском формате записи даты
toDateString
Возвращает информацию о дате в виде текстовой строки в американском формате записи даты
toUTCString
Преобразовывает дату в строку (согласно универсальному времени)
valueOf
Возвращает примитивное значение объекта Date
getUTCFullYear
Возвращает год для указанной даты (согласно универсальному времени)

См. также

  • Встроенные объекты ECMAScript /Стандарт языка/


Date.UTC

Синтаксис

Date.UTC(year, month, day[, hours[, minutes[, seconds[,ms]]]])

Аргументы

year
Целое число, задающее год. Если оно меньше 100, то к нему прибавляется 1900.
month
Целое число, задающее номер месяца в диапазоне от 0 до 11 (0 = январь, 1 = февраль, ... , 11 = декабрь).
date
Целое число, задающее день месяца в диапазоне от 1 до 31.
hours
Целое число, в диапазоне от 0 до 23 (от полуночи до 23:00), представляющее час. Применяется, если указывается аргумент minutes.
minutes
Целое число, в диапазоне от 0 до 59, представляющее минуты. Применяется, если указывается аргумент seconds.
seconds
Целое число в диапазоне от 0 до 59, представляющее секунды. Применяется, если указывается аргумент milliseconds.
ms
Целое число в диапазоне от 0 до 999, представляющее миллисекунды.

Описание, примеры

Метод UTC возвращает количество миллисекунд, истекших с полуночи 1 января 1970 года и указанной датой, используя время в формате UTC.

Возвращаемое значение может использоваться методом setTime и конструктором объекта Date.

Если значение аргумента превышает верхнюю границу его диапазона или является отрицательным числом, остальные хранящиеся значения изменяются соответственно. Например, если задать 150 секунд, яваскрипт переопределит это число как две минуты и 30 секунд.

Метод Date.UTC полностью аналогичен конструктору Date с единственным отличием: полученное значение вычисляется по времени UTC, а не по локальному времени.

Это статический метод, который можно вызывать без создания объекта даты, поэтому для доступа к нему используется форма Date.UTC, а не объект .UTC.

Пример:
Выделить все
var x = Date.UTC(2000, 1, 2, 12, 35, 40);
var d = new Date(x);
document.write(d.toUTCString());

// Выводится следующий результат:
Wed, 2 Feb 2000 12:35:40 UTC.
Пример: Создание Date для даты в зоне GMT
gmtDate = new Date(Date.UTC(96, 11, 1, 0, 0, 0));
// Sun Dec 01 1996 03:00:00 GMT+0300 (Russian Standard Time)


Date.parse

Синтаксис

Date.parse(dateVal)

Аргументы

dateVal
Строка, содержащая дату в стандартном строковом формате.

Описание, примеры

Метод parse получает строку с датой (напр. "Jan 03, 2000") и возвращает целое число, представляющее собой количество миллисекунд, истекших с полуночи 1 января 1970 года GMT+0 до даты, указанной в параметре dateVal.

Это статический метод, который можно вызывать без создания объекта даты, поэтому для доступа к нему используется форма Date.parse, а не объект .parse.

Пример:
Выделить все
var d = new Date();
d.setTime(Date.parse("21 May 1958 10:12"));
document.write(d.toLocaleString());

// Выведет на экран следующий результат:
Wednesday, May 21, 1958 10:12:00

В случае, если метод parse не смог разобрать переданную ему в качестве параметра строку, он возвращает значение NaN.

Правила разбора строки

Поддерживается стандарт IETF standard (RFC 1123, раздел 5.2.14 и т.д.)

Существуют следующие правила перевода даты из текстовой строки:

  • Для краткого формата даты допускается использование разделителей "/" или "-", но порядок элементов должен быть строго "месяц/день/год", например "7/20/96".
  • Для полного формата даты порядок указания элементов может быть произвольным. Если используется два знака для обозначения года, то число должно быть меньше 70 для указания 21-го века. Например "July 10 1995".
  • Любой текст в круглых скобках рассматривается как комментарии. Комментарии могут быть вложенными, например: "July 10 1995 (this (1234) is a comment)".
  • Запятые и пробелы рассматриваются как разделители, могут повторяться.
  • Месяца и дни недели должны иметь два и больше знаков. Если в двузначном написании элементы становятся идентичными, то используется последнее значение, например "Ju" это Июль, а не Июнь.
  • Если в полном формате даты указан неверный день недели, то он игнорируется.
    Яваскрипт обрабатывает все стандартные временные зоны, включая UTC и GMT.
  • Значения для часов, минут и секунд могут быть пропущены, например "10:", "10:11", и "10:11:12".
  • Если время указано в 24-часовом формате, то указание полудня считается ошибкой, например "23:15 PM" - ошибка.
  • Строка, содержащая неправильную дату - ошибочна. Например, строка содержащая два года или два месяца.
Пример:
Выделить все
IPOdate.setTime(Date.parse("Aug 9, 1995")) ;

// Возвращает 807937200000 в зоне GMT-0300,
// и другие значения в других зонах, так как зона
// не указана в аргументе
Date.parse("Aug 9, 1995");

// Возвращает 807926400000 в любой зоне.
Date.parse("Wed, 09 Aug 1995 00:00:00 GMT");


toLocaleString

Синтаксис

dateObj.toLocaleString()

Аргументы

dateObj
Обязательный. любой Date объект.

Описание, примеры

Метод toLocaleString возвращает String-объект, содержащий дату в длинном формате по умолчанию.

  • Для дат в диапазоне 1601 - 1999 формат даты в соотвествии с региональными установками панели управления пользователя.
  • Для дат вне этого диапазона используется формат по умолчанию.

Например, в США, метод toLocaleString возвращает "01/05/96 00:00:00" для 5 января 1996 г., в Европе для этой даты он возвращает "05/01/96 00:00:00", поскольку в Европе принято ставить день перед месяцем.

Пример:
Выделить все
var d = new Date()

alert(d.toLocaleString())
// 7 Март 2009 г. 2:05:32
// как видите, с русским у нее проблемы
// склонять "7 марта" - не умеет


getDate

Синтаксис

getDate()

Аргументы

Описание, примеры

Возвращает целое число от 1 до 31.

Пример: День запуска спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Жители Дальнего Востока получат здесь 5
day = sputnikLaunch.getDate()


getDay

Синтаксис

getDay()

Аргументы

Описание, примеры

getDay возвращает целое число, обозначающее день недели: 0 - воскресенье, 1 - понедельник, 2 - вторник, и т.д.

Пример: День запуска спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Жители Москвы получат пятницу, а жители Владивостока - субботу
day = sputnikLaunch.getDay()


getFullYear

Синтаксис

getFullYear()

Аргументы

Описание, примеры

Возвращает полное значение года. Для дат от 1000 до 9999 года getFullYear возвращает четырёхзначное число.

Этот метод рекомендуется использовать вместо getYear, который возвращает двузначное число.

Пример: Не подскажете, а какой сегодня год?
var today = new Date();
var yr = today.getFullYear();


getMilliseconds

Синтаксис

getMilliseconds()

Аргументы

Описание, примеры

Возвращает целое число от 0 до 999.

Пример: Миллисекунды
var ms;
Today = new Date();
ms = Today.getMilliseconds();


getMinutes

Синтаксис

getMinutes()

Аргументы

Описание, примеры

Возвращает целое число от 0 до 59.

Пример: Запуск спутника
Выделить все
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Большинство жителей Земли получат здесь 28
// (кроме жителей нецелых часовых поясов)
minutes = sputnikLaunch.getMinutes()


getMonth

Синтаксис

getMonth()

Аргументы

Описание, примеры

Возвращает целое число от 0 до 11. 0 соответствует янвварю, 1 - февралю, и т.д.

Пример: Запуск спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Здесь получится 9
month = sputnikLaunch.getMonth()


getSeconds

Синтаксис

getSeconds()

Аргументы

Описание, примеры

Возвращает целое число от 0 до 59.

Пример: Момент запуска спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Жители Дальнего Востока получат здесь 5
sec = sputnikLaunch.getSeconds()


getTime

Синтаксис

getTime()

Аргументы

Описание, примеры

Значение, возвращаемое методом getTime, равно количеству миллисекунд, прошедших с полуночи 1 января 1970 года. Этот метод можно использовать для присвоения значения другому объекту Date.

Этот метод функционально эквивалентен методу valueOf.

Пример: Копируем значение
// Копируем значение theBigDay в sameAsBigDay:
theBigDay = new Date("July 1, 1999")
sameAsBigDay = new Date()
sameAsBigDay.setTime(theBigDay.getTime())


getTimezoneOffset

Синтаксис

getTimezoneOffset()

Аргументы

Описание, примеры

Смещение часового пояса равняется разнице между универсальным (UTC) и местным временем в минутах. Заметьте, что смещение будет положительным, если местное время отстаёт от UTC, и отрицательным, если оно опережает UTC. Например, если ваш часовой пояс - UTC+10 (Владивостокское зимнее время), то метод вернёт -600.

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

Пример: Получение часового пояса
x = new Date()
// Вычислим значение смещения текущего часового пояса в часах
currentTimeZoneOffsetInHours = -x.getTimezoneOffset()/60


getUTCDate

Синтаксис

getUTCDate()

Аргументы

Описание, примеры

Возвращает целое число от 1 до 31.

Пример: День запуска спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Здесь получится 4
day = sputnikLaunch.getUTCDate()


getUTCDay

Синтаксис

getUTCDay()

Аргументы

Описание, примеры

getUTCDay возвращает целое число, обозначающее день недели: 0 - воскресенье, 1 - понедельник, 2 - вторник, и т.д.

Пример: День запуска спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Здесь получится 5 - пятница
day = sputnikLaunch.getDay()


getUTCHours

Синтаксис

getUTCHours()

Аргументы

Описание, примеры

Возвращает целое число от 0 до 23.

Пример: Час запуска спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Здесь получится 19
day = sputnikLaunch.getUTCHours()


getHours

Синтаксис

getHours()

Аргументы

Описание, примеры

Возвращает целое число от 0 до 23.

Пример: Час запуска спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Жители разных часовых поясов получат здесь разные значения
day = sputnikLaunch.getHours()


getUTCMilliseconds

Синтаксис

getUTCMilliseconds()

Аргументы

Описание, примеры

Возвращает целое число от 0 до 999.

Пример: Миллисекунды
var ms;
Today = new Date();
ms = Today.getUTCMilliseconds();


getUTCMonth

Синтаксис

getUTCMonth()

Аргументы

Описание, примеры

Возвращает целое число от 0 до 11. 0 соответствует янвварю, 1 - февралю, и т.д.

Пример: Запуск спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Здесь получится 9
month = sputnikLaunch.getUTCMonth()


getUTCMinutes

Синтаксис

getUTCMinutes()

Аргументы

Описание, примеры

Возвращает целое число от 0 до 59.

Пример: Запуск спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Здесь получается 28
minutes = sputnikLaunch.getUTCMinutes()


getUTCSeconds

Синтаксис

getUTCSeconds()

Аргументы

Описание, примеры

Возвращает целое число от 0 до 59.

Пример: Момент запуска спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")

// Здесь получится 34
sec = sputnikLaunch.getUTCSeconds()


getYear

Синтаксис

getYear()

Аргументы

Описание, примеры

getYear более не рекомендуется к использованию и был заменён методом getFullYear .

Метод getYear возвращает значение года минус 1900.

В ранних реализациях языка JavaScript (1.2 и ранее), этот метод возвращал две последние цифры года для 1900-1999 годов, и полное значение года (четырёхзначное) для всех остальных лет.

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

Пример: XX век и не только
Выделить все
Xmas = new Date("December 25, 1995 23:15:00")
year = Xmas.getYear() // возвращает 95
Xmas = new Date("December 25, 2000 23:15:00")
year = Xmas.getYear() // возвращает 100
Xmas = new Date("December 25, 1800 23:15:00")
year = Xmas.getYear() // возвращает -100


setSeconds

Синтаксис

setSeconds(secondsValue)

Аргументы

secondsValue
Целочисленное значение от 0 до 59, означающее секунды
msValue
Число от 0 до 999, означающее миллисекунды

Описание, примеры

Если значение параметра msValue опущено, используется значение, возвращаемое методом getMilliseconds.

Если переданный параметр имеет значение, лежащее вне предусмотренного диапазона, метод setSeconds пытается соответствующим образом изменить значение других параметров. Например, если использовать для secondsValue значение 100, то минуты будут увеличены на 1, а в качестве значения секунд будет использовано 40.

Пример: Изменение времени
// Меняем секунды на 30
theBigDay = new Date();
theBigDay.setSeconds(30)


setFullYear

Синтаксис

setFullYear(yearValue[, monthValue[, dayValue]])

Аргументы

yearValue
Полное численное значение года, например 1995
monthValue
Целочисленное значение от 0 до 11, обозначающее месяц от января до декабря
dayValue
Целочисленное значение от 1 до 31, обозначающее день месяца. Если вы указываете dayValue, то перед ним надо указать monthValue

Описание, примеры

Если значения параметров monthValue и dayValue опущены, используются значения, возвращаемые методами getMonth и getDate.

Если какой-либо переданный параметр имеет значение, лежащее вне предусмотренного диапазона, метод setFullYear пытается соответствующим образом изменить значение других параметров. Например, если использовать для monthValue значение 15, то год будет увеличен на 1 (yearValue+ 1), а 3 будет использовано в качестве значения месяца.

Пример: Изменение даты
// Меняем год на 1997-й
theBigDay = new Date();
theBigDay.setFullYear(1997);


setMilliseconds

Синтаксис

setMilliseconds(millisecondsValue)

Аргументы

millisecondsValue
Численное значение от 0 до 999, означающее миллисекунды

Описание, примеры

Если переданное число имеет значение, лежащее вне предусмотренного диапазона, метод setMilliseconds пытается соответствующим образом изменить значение объекта Date. Например, если использовать значение 1005, то значение секунд будут увеличено на 1, а в качестве значения миллисекунд будет использовано 5.

Пример: Изменение времени
// Меняем миллисекунды на 100
theBigDay = new Date();
theBigDay.setMilliseconds(100);


setTime

Синтаксис

setTime(timeValue)

Аргументы

timeValue
Число, равное количеству миллисекунд, прошедших с полуночи 1 января 1970 года по универсальному времени

Описание, примеры

Этот метод можно использовать для присвоения значения другому объекту Date.

Пример: Копируем значение
// Копируем значение theBigDay в sameAsBigDay:
theBigDay = new Date("July 1, 1999")
sameAsBigDay = new Date()
sameAsBigDay.setTime(theBigDay.getTime())


setYear

Синтаксис

setYear(yearValue)

Аргументы

yearValue
Сокращённое численное обозначение года, например 95

Описание, примеры

setYear более не рекомендуется к использованию и был заменён методом setFullYear .

Если переданное значение является числом от 0 до 99 включительно, то значение года для экземпляра объекта Date устанавливается равным 1900 + yearValue. В противном случае значение года устанавливается равным yearValue.

Для корректной обработки годов, не относящихся к XX веку, рекомендуется использовать setFullYear, всегда принимающий полное значение года.

Пример: Установка года
Выделить все
// Это 1996 год
theBigDay.setYear(96)
// И это 1996 год
theBigDay.setYear(1996)
// А 2000 год - только так
theBigDay.setYear(2000)


setDate

Синтаксис

setDate(dayValue)

Аргументы

dayValue
Целое от 1 до 31, означающее день месяца.

Описание, примеры

Если переданный параметр имеет значение, лежащее вне предусмотренного диапазона, метод setDate попытается соответствующим образом изменить значение экземпляра объекта Date. Например, если использовать для dayValue значение 40, а значение месяца в объекте соответствует июню, то день и месяц в объекте будут равны 10 июля.

Пример: Изменение даты
// Меняем число на 24-е
theBigDay = new Date("July 27, 1962 23:30:00")
theBigDay.setDate(24)


setUTCDate

Синтаксис

setUTCDate(dayValue)

Аргументы

dayValue
Целое от 1 до 31, означающее день месяца.

Описание, примеры

Если переданный параметр имеет значение, лежащее вне предусмотренного диапазона, метод setUTCDate попытается соответствующим образом изменить значение экземпляра объекта Date. Например, если использовать для dayValue значение 40, а значение месяца в объекте соответствует июню, то день и месяц в объекте будут равны 10 июля.

Пример: Изменение даты
// Меняем число на 24-е
theBigDay = new Date("July 27, 1962 23:30:00")
theBigDay.setUTCDate(24)


setUTCHours

Синтаксис

setUTCHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])

Аргументы

hoursValue
Целочисленное значение от 0 до 23, означающее часы
minutesValue
Целочисленное значение от 0 до 59, означающее минуты
secondsValue
Целочисленное значение от 0 до 59, означающее секунды. Если вы указываете secondsValue, то перед ним надо указать minutesValue
msValue
Число от 0 до 999, означающее миллисекунды. Если вы указываете msValue, то перед ним надо указать monthValue и secondsValue

Описание, примеры

Если значения параметров minutesValue,secondsValue и msValue опущены, используются значения, возвращаемые методами getUTCMinutes, getUTCSeconds и getUTCMilliseconds.

Если какой-либо переданный параметр имеет значение, лежащее вне предусмотренного диапазона, метод setHours пытается соответствующим образом изменить значение других параметров. Например, если использовать для secondsValue значение 100, то минуты будут увеличены на 1 (minutesValue+ 1), а в качестве значения секунд будет использовано 40.

Пример: Изменение времени
// Меняем час на 7
theBigDay = new Date();
theBigDay.setUTCHours(7);


setHours

Синтаксис

setHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])

Аргументы

hoursValue
Целочисленное значение от 0 до 23, означающее часы
minutesValue
Целочисленное значение от 0 до 59, означающее минуты
secondsValue
Целочисленное значение от 0 до 59, означающее секунды. Если вы указываете secondsValue, то перед ним надо указать minutesValue
msValue
Число от 0 до 999, означающее миллисекунды. Если вы указываете msValue, то перед ним надо указать monthValue и secondsValue

Описание, примеры

Если значения параметров minutesValue,secondsValue и msValue опущены, используются значения, возвращаемые методами getMinutes, getSeconds и getMilliseconds.

Если какой-либо переданный параметр имеет значение, лежащее вне предусмотренного диапазона, метод setHours пытается соответствующим образом изменить значение других параметров. Например, если использовать для secondsValue значение 100, то минуты будут увеличены на 1 (minutesValue+ 1), а в качестве значения секунд будет использовано 40.

Пример: Изменение времени
// Меняем час на 7
theBigDay = new Date();
theBigDay.setHours(7);


setUTCMilliseconds

Синтаксис

setUTCMilliseconds(millisecondsValue)

Аргументы

millisecondsValue
Численное значение от 0 до 999, означающее миллисекунды

Описание, примеры

Если переданное число имеет значение, лежащее вне предусмотренного диапазона, метод setUTCMilliseconds пытается соответствующим образом изменить значение объекта Date. Например, если использовать значение 1005, то значение секунд будут увеличено на 1, а в качестве значения миллисекунд будет использовано 5.

Пример: Изменение времени
// Меняем миллисекунды на 100
theBigDay = new Date();
theBigDay.setUTCMilliseconds(100);


setUTCMinutes

Синтаксис

setUTCMinutes(minutesValue[, secondsValue[, msValue]])

Аргументы

minutesValue
Целочисленное значение от 0 до 59, означающее минуты
secondsValue
Целочисленное значение от 0 до 59, означающее секунды.
msValue
Число от 0 до 999, означающее миллисекунды. Если вы указываете msValue, то перед ним надо указать secondsValue

Описание, примеры

Если значения параметров secondsValue и msValue опущены, используются значения, возвращаемые методами getUTCSeconds и getUTCMilliseconds.

Если какой-либо переданный параметр имеет значение, лежащее вне предусмотренного диапазона, метод setUTCMinutes пытается соответствующим образом изменить значение других параметров. Например, если использовать для secondsValue значение 100, то минуты будут увеличены на 1 (minutesValue+ 1), а в качестве значения секунд будет использовано 40.

Пример: Изменение времени
// Меняем минуты на 45
theBigDay = new Date();
theBigDay.setUTCMinutes(45)


setMinutes

Синтаксис

setMinutes(minutesValue[, secondsValue[, msValue]])

Аргументы

minutesValue
Целочисленное значение от 0 до 59, означающее минуты
secondsValue
Целочисленное значение от 0 до 59, означающее секунды.
msValue
Число от 0 до 999, означающее миллисекунды. Если вы указываете msValue, то перед ним надо указать secondsValue

Описание, примеры

Если значения параметров secondsValue и msValue опущены, используются значения, возвращаемые методами getSeconds и getMilliseconds.

Если какой-либо переданный параметр имеет значение, лежащее вне предусмотренного диапазона, метод setMinutes пытается соответствующим образом изменить значение других параметров. Например, если использовать для secondsValue значение 100, то минуты будут увеличены на 1 (minutesValue+ 1), а в качестве значения секунд будет использовано 40.

Пример: Изменение времени
// Меняем минуты на 45
theBigDay = new Date();
theBigDay.setMinutes(45)


setMonth

Синтаксис

setMonth(monthValue[, dayValue])

Аргументы

monthValue
Целочисленное значение от 0 до 11, обозначающее месяц от января до декабря
dayValue
Целочисленное значение от 1 до 31, обозначающее день месяца

Описание, примеры

Если значение параметра dayValue опущено, используется значение, возвращаемое методом getDate.

Если переданный параметр имеет значение, лежащее за ожидаемыми пределами, метод setMonth пытается соответствующим образом изменить значение других параметров. Например, если использовать для monthValue значение 15, то год будет увеличен на 1, а 3 будет использовано в качестве значения месяца.

Пример: Изменение даты
// Меняем месяц на июль
theBigDay = new Date();
theBigDay.setMonth(6)


setUTCSeconds

Синтаксис

setUTCSeconds(secondsValue)

Аргументы

secondsValue
Целочисленное значение от 0 до 59, означающее секунды
msValue
Число от 0 до 999, означающее миллисекунды

Описание, примеры

Если значение параметра msValue опущено, используется значение, возвращаемое методом getUTCMilliseconds.

Если переданный параметр имеет значение, лежащее вне предусмотренного диапазона, метод setUTCSeconds пытается соответствующим образом изменить значение других параметров. Например, если использовать для secondsValue значение 100, то минуты будут увеличены на 1, а в качестве значения секунд будет использовано 40.

Пример: Изменение времени
// Меняем секунды на 30
theBigDay = new Date();
theBigDay.setUTCSeconds(30)


setUTCFullYear

Синтаксис

setUTCFullYear(yearValue[, monthValue[, dayValue]])

Аргументы

yearValue
Полное численное значение года, например 1995
monthValue
Целочисленное значение от 0 до 11, обозначающее месяц от января до декабря
dayValue
Целочисленное значение от 1 до 31, обозначающее день месяца. Если вы указываете dayValue, то перед ним надо указать monthValue

Описание, примеры

Если значения параметров monthValue и dayValue опущены, используются значения, возвращаемые методами getUTCMonth и getUTCDate.

Если какой-либо переданный параметр имеет значение, лежащее вне предусмотренного диапазона, метод setUTCFullYear пытается соответствующим образом изменить значение других параметров. Например, если использовать для monthValue значение 15, то год будет увеличен на 1 (yearValue+ 1), а 3 будет использовано в качестве значения месяца.

Пример: Изменение даты
// Меняем год на 1997-й
theBigDay = new Date();
theBigDay.setUTCFullYear(1997);


setUTCMonth

Синтаксис

setUTCMonth(monthValue[, dayValue])

Аргументы

monthValue
Целочисленное значение от 0 до 11, обозначающее месяц от января до декабря
dayValue
Целочисленное значение от 1 до 31, обозначающее день месяца

Описание, примеры

Если значение параметра dayValue опущено, используется значение, возвращаемое методом getUTCDate.

Если переданный параметр имеет значение, лежащее за ожидаемыми пределами, метод setUTCMonth пытается соответствующим образом изменить значение других параметров. Например, если использовать для monthValue значение 15, то год будет увеличен на 1, а 3 будет использовано в качестве значения месяца.

Пример: Изменение даты
// Меняем месяц на июль
theBigDay = new Date();
theBigDay.setUTCMonth(6)


toGMTString

Синтаксис

toGMTString()

Аргументы

Описание, примеры

toGMTString более не рекомендуется к использованию и был заменён методом toUTCString.

Точный формат строки, возвращаемой toGMTString, может различаться на разных платформах.

Вместо этого метода следует использовать Date.toUTCString.

Как и toUTCString, toGMTString возвращает строку, содержащее текстовое представление даты и времени по Гринвичу на английском языке в американском формате.


toLocaleFormat

Синтаксис

toLocaleFormat(formatString)

Аргументы

formatString
Строка описания формата в том же формате, что и функция strftime() языка C.

Описание, примеры

Метод toLocaleFormat обеспечивает больший контроль за представлением даты и времени. Названия месяцев и дней недели представляются согласно языковым настройкам системы. Однако порядок записи месяца и числа и прочие элементы локализации не выбираются автоматически, поскольку вы сами задаёте порядок их следования. Следует принять к сведению, что строка будет локализована согласно настройкам операционной системы, которые могут не совпадать с региональными настройками браузера.

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

Пример: Неправильное использование toLocaleFormat
var today = new Date();
var date = today.toLocaleFormat("%A, %B %e, %Y"); // Плохой пример
// Выводит что-то вроде "пятница, Октябрь 04, 1957" - ну куда это годится?


toLocaleTimeString

Синтаксис

toLocaleTimeString()

Аргументы

Описание, примеры

Метод toLocaleTimeString использует функционал операционной системы для форматирования текстового представления времени. Он преобразовывает данные о времени в строку, используя настройки форматирования операционной системы, в которой выполняется скрипт. Например, в США более распространена 12-часовая система (7:28:34 PM), а в России - 24 часовая (19:28:34).

Такие методы как getHours, getMinutes и getSeconds дают более предсказуемые результаты, чем toLocaleTimeString. Используйте toLocaleTimeString, когда намереваетесь показать пользователю строку в формате, соответствующем выбранным им региональным настройкам. Следует помнить что данный метод, по своей природе, ведёт себя по-разному в зависимости от операционной системы и настроек пользователя.

Пример: Время запуска спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")
today.toLocaleTimeString() // Москвичи зимой получат "23:28:34"
// Жители других местностей - возможно, что-то другое


toLocaleDateString

Синтаксис

toLocaleDateString()

Аргументы

Описание, примеры

Метод toLocaleDateString использует функционал операционной системы для форматирования текстового представления даты. Он преобразовывает дату в строку, используя настройки форматирования операционной системы, в которой выполняется скрипт. Например, в США число записывается после месяца (04/15/98), а в России и Германии число идёт перед месяцем (15.04.98). Если операционная система " не совместима с 2000 годом" (т.е. не всегда использует четырёхзначную запись года), toLocaleDateString вернёт строку "не 2000-совместимым" годом. При преобразовании значения года, которое операционная система форматирует некорректно, toLocaleDateString ведёт себя аналогично toString.

Такие методы как getDate, getMonth и getFullYear дают более предсказуемые результаты, чем toLocaleDateString. Используйте toLocaleDateString, когда намереваетесь показать пользователю строку в формате, соответствующем выбранным им региональным настройкам. Следует помнить что данный метод, по своей природе, ведёт себя по-разному в зависимости от операционной системы и настроек пользователя.

Пример: День запуска спутника
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")
today.toLocaleDateString() // Москвичи получат "4 Октябрь 1957 г."
// Жители других местностей - возможно, что-то другое


toString

Синтаксис

toString()

Аргументы

Описание, примеры

Объект Date перегружает метод toString объекта Object; он не наследует Object.toString. Для объектов Date метод toString возвращает строковое представление объекта.

toString всегда возвращает строку, представляющую дату на английском языке в американском формате.

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

Пример: Использование Date.toString
Выделить все
var sputnikLaunch = new Date("October 4, 1957 19:28:34 GMT")
alert(sputnikLaunch.toString())
// выведет что-то вроде Fri Oct 04 1957 23:28:34 GMT+0400 (Russian Standard Time)
alert(sputnikLaunch)
// выведет то же самое


toTimeString

Синтаксис

toTimeString()

Аргументы

Описание, примеры

Экземпляр объекта Date означает некоторый момент времени. Вызов метода toString вернёт информацию об этом моменте в виде строки, содержащей пригодное для человеческого восприятия текстовое представление даты на английском языке, в американском формате. Для SpiderMonkey (реализация JavaScript от Mozilla) это представление состоит из даты (день, месяц, год), за которой следует время (часы, минуты, секунды и часовой пояс). Иногда требуется получить только информацию о времени - для этого существует метод toTimeString.

Метод toTimeString представляется особенно полезным, если учесть тот факт, что для корректных реализаций ECMA-262 формат строки, получаемой в результате вызова метода toString для объектов Date, не регламентирован. По этой причине не существует простого и надёжного способа выделить из этой строки часть, соответствующую времени.

Пример: Использование toTimeString
var d = new Date(1957, 9, 4, 19, 28, 34);
println(d.toString()); // выведет Fri Oct 04 1957 23:28:34 GMT+0400 (Russian Standard Time)
println(d.toTimeString()); // выведет 23:28:34 GMT+0400 (Russian Standard Time)


toDateString

Синтаксис

toDateString()

Аргументы

Описание, примеры

Экземпляр объекта Date означает некоторый момент времени. Вызов метода toString вернёт информацию об этом моменте в виде строки, содержащей пригодное для человеческого восприятия текстовое представление даты на английском языке, в американском формате. Для SpiderMonkey (реализация JavaScript от Mozilla) это представление состоит из даты (день, месяц, год), за которой следует время (часы, минуты, секунды и часовой пояс). Иногда требуется получить только информацию о дате - для этого существует метод toDateString.

Метод toDateString представляется особенно полезным, если учесть тот факт, что для корректных реализаций ECMA-262 формат строки, получаемой в результате вызова метода toString для объектов Date, не регламентирован. По этой причине не существует простого и надёжного способа выделить из этой строки часть, соответствующую дате.

Пример: Использование toDateString
var d = new Date(1957, 9, 4, 19, 28, 34);
alert(d.toString()); // выведет Fri Oct 04 1957 23:28:34 GMT+0400 (Russian Standard Time)
alert(d.toDateString()); // выведет Fri Oct 04 1957


toUTCString

Синтаксис

toUTCString()

Аргументы

Описание, примеры

toUTCString возвращает пригодную для человеческого восприятия строку на английском языке в американском формате, согласно универсальному часовому поясу (Гринвичу). Точный формат строки, возвращаемой toUTCString , может различаться на разных платформах.

Пример: Использование toUTCString
var d = new Date(1957, 9, 4, 19, 28, 34);
alert(d.toUTCString()); // выведет Fri, 04 Oct 1957 19:28:34 GMT


valueOf

Синтаксис

valueOf()

Аргументы

Описание, примеры

Значение, возвращаемое методом getTime, равно количеству миллисекунд, прошедших с полуночи 1 января 1970 года.

Этот метод функционально эквивалентен методу getTime.

Этот метод является служебным и обычно не вызывается явно в коде.

Пример: Миллисекунды
alert(new Date(2009,1,14,2,31,30).valueOf());
// По московскому времени будет красивенькое число


getUTCFullYear

Синтаксис

getUTCFullYear()

Аргументы

Описание, примеры

Возвращает полное значение года. Для дат от 1000 до 9999 года getUTCFullYear возвращает четырёхзначное число.

Этот метод рекомендуется использовать вместо getYear, который возвращает двузначное число.

Пример: Не подскажете, а какой сегодня год?
var today = new Date();
var yr = today.getUTCFullYear();


Error

Создание

new Error(message)

Аргументы

message
сообщение об ошибке

Ошибки выполнения яваскрипта приводят к генерации исключений в виде объектов Error.

Существуют следующие базовые подклассы Error:

EvalError
Ошибка при выполнении eval()
RangeError
Эта ошибка происходит, когда переданный параметр лежит за границами допустимого диапазона
ReferenceError
Ошибка при разыменовании неверной ссылки
SyntaxError
Синтаксическая ошибка, которая произошла при разборе кода, переданного eval()
TypeError
Переменная или параметр неправильного типа
URIError
Ошибка происходит, когда encodeURI() или decodeURI() вызваны с неправильными параметрами
Пример: Ошибка при выполнении
Выделить все
try {
    eval(someThing)
} catch (e) {
    if (e instanceof EvalError) {
        alert("Ошибка при выполнении: " + e.message);
    } else {
        throw(e)
    }
}

Описание, примеры

Пример: Пользовательское исключение
Выделить все
try {
    throw new Error("Whoops!");
} catch (e) {
    alert(e.name + ": " + e.message);
}

Свойства

message
Читаемое описание ошибки
name
название типа ошибки

См. также

  • Конструкции языка. Обработка ошибок. /Статья/
  • throw /Синтаксическая конструкция/
  • try..catch /Синтаксическая конструкция/


message

Читаемое описание ошибки

Описание, примеры

Это свойство содержит краткое описание ошибки. Как правило, это основной источник информации о произошедшей ошибке.

Пример:
var e = new Error("Произошла проблема");
// e.message = Произошла проблема
throw e;


name

название типа ошибки

Описание, примеры

По умолчанию - объекты класса Error получают значение "Error". Однако, можно его поменять на свое.

Пример:
Выделить все
var e = new Error("Malformed input") // e.name = "Error"

e.name = "ParseError" // e.toString() вернет  "ParseError: Malformed input"

throw e;


EvalError

Создание

new EvalError(message)

Аргументы

message
сообщение об ошибке

Описание, примеры

Эта ошибка возникает при неправильном использовании функции eval. Для синтаксических ошибок предусмотрен тип SyntaxError.

Наследует

Error

См. также

  • eval /Метод/


Function

Создание

new Function ([arg1[, arg2[, ... argN]],] functionBody)

Аргументы

arg1, arg2, ... argN
Имена параметров для создаваемой функции. Каждый аргумент должен быть строкой, которая является корректным идентификатором javascript или списком таких строк, разделенных запятой. Например: "x", "theValue" или "a,b".
functionBody
javascript-код тела функции

Описание, примеры

Каждая функция в яваскрипт является объектом класса Function.

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

Вызов конструктора Function как функции работает так же, как вызов с new. Иначе говоря, оператор new при вызове Function необязателен.

Пример: Пример создания функции
Выделить все
var multiply = new Function("x", "y", "return x * y")
// или так:
var multiply = new Function("x,y", "return x * y")

var theAnswer = multiply(7, 6);

Методы

call
Позволяет выполнить функцию/метод в контексте указанного объекта.
apply
Позволяет вызывать функцию или метод одного объекта в контексте другого

Свойства

length
число аргументов, объявленных в определении функции

См. также

  • function /Синтаксическая конструкция/
  • function /Оператор/
  • Функции /Статья/
  • Определение функции /Стандарт языка/


call

Синтаксис

var result = fun.call(thisArg[, arg1[, arg2[, ...]]])

Аргументы

thisArg
Задает значение this внутри функции. Если thisArg - null или undefined, то это будет глобальный объект. В ином случае, this будет равно Object(thisArg) (то есть thisArg, если thisArg уже объект, или String, Boolean или Number, если thisArg - примитивное значение соответствующего типа). Таким образом, при выполнении функции всегда соблюдается условие typeof this == 'object'.
arg1, arg2 ..
Аргументов, с которыми будет вызвана функция.

Описание, примеры

Метод call может применяться для вызова функции в контексте нужного объекта:

Пример: Вызов sayName в контексте разных объектов
Выделить все
var Animal1 = {name: 'Cat'}
var Animal2 = {name: 'Dog'}

function sayName() {
    // this — ссылка на объект, в контексте которого вызвана функция
    alert(this.name);
}

sayName.call(Animal1) // выдаст сообщение "Cat"
sayName.call(Animal2) // выдаст сообщение "Dog"

При этом совершенно не важно, какому объекту принадлежит функция. В качестве текущего(this) объекта будет взят первый аргумент.

Пример:
Выделить все
var Animal1 = {
    name: 'Cat',
    sayName: function() {
        alert(this.name);
    }
};

var Animal2 = {name: 'Dog'};

Animal1.sayName() // выдаст сообщение "Cat"
Animal1.sayName.call(Animal2) // выдаст сообщение "Dog"

Помимо смены контекста вызова, метод call может передавать в функцию аргументы:

Пример:
Выделить все
var obj = {attr: 10};

function sum(a, b) {
    alert(this.attr + a + b);
}

sum.call(obj, 5, 2) // выдаст сообщение с результатом "17"

Если контекст вызова не указан, то функция будет выполнятся в контексте объекта window:

Пример:
Выделить все
window.a = 5
function sayThis() {
     alert(this.a);
}

sayThis.call() // выдаст 5
Пример:
Выделить все
window.a = 5
function sayThis(b) {
     alert(this.a + b);
}

sayThis.call(null, 3) // выдаст 8

См. также

  • apply /Метод/


apply

Синтаксис

var result = function.apply(thisArg[, argsArray]);

Аргументы

thisArg
Задает значение this внутри функции. Если thisArg - null или undefined, то это будет глобальный объект. В ином случае, this будет равно Object(thisArg) (то есть thisArg, если thisArg уже объект, или String, Boolean или Number, если thisArg - примитивное значение соответствующего типа). Таким образом, при выполнении функции всегда соблюдается условие typeof this == 'object'.
argsArray
Массив аргументов, с которыми будет вызвана функция, или null/undefined для вызова без аргументов.

Описание, примеры

Любую функцию в яваскрипт можно вызвать в контексте любого объекта.

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

Метод apply очень похож на call, за исключением передачи аргументов. В apply используется массив аргументов вместо списка именованных параметров.

Используя apply, вы можете использовать литеральное объявление массива, например fun.apply(this, [name, value]).

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

Это используется во множестве паттернов проектирования. Например, для вызова метода родителя в ООП или для создания обертки, как в примере ниже:

Пример: Подменяем метод на такой же, но с логированием
Выделить все
// метод join будет теперь сообщать о каждом вызове
Array.prototype.join = function() {
  alert("Меня вызвали! Аргументов:"+arguments.length)
  Array.prototype.join.apply(this, arguments)
}

var arr = [1,2,3]


length

число аргументов, объявленных в определении функции

Описание, примеры

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

Для получения аргументов, реально переданных функции, внутри тела функции можно использовать псевдо-массив arguments и его свойство length.

Пример: Функция суммирует ровно 3 аргумента
Выделить все
function sum3(a,b,c){
  var result = 0
  for(var i=0; i<sum3.length; i++) {
    result = result + arguments[i]
  }
}

// ровно 3 аргумента
sum3(1,1,1) // => 1+1+1 = 3

// меньше 3 аргументов
sum3(1,1)  // 1+1+undefined = undefined

// больше 3 аргументов
sum3(1,1,1,1,1,1,1) // => 3


Math

В отличие от других глобальных объектов, Math не является конструктором. Все свойства и методы Math статичны.

Вы можете обратиться к константе pi как Math.PI или вызвать функцию округления как Math.floor(x). Все константы определены с максимально возможной в яваскрипт точностью (double).

Методы

Math.abs
Возвращает абсолютное значение числа
Math.acos
Возвращает арккосинус (в радианах) от числа
Math.asin
Возвращает арксинус (в радианах) от числа
Math.atan
Возвращает арктангенс (в радианах) от числа
Math.atan2
Возвращает арктангенс частного аргументов
Math.ceil
Округляет в большую сторону
Math.floor
Округляет в меньшую сторону
Math.cos
Вычисляет косинус числа
Math.sin
Вычисляет синус числа
Math.exp
Возвращает Ex, где x - аргумент, а E - основание натуральных логарифмов
Math.log
Возвращает натуральный (по основанию E) логарифм числа
Math.pow
Возводит число в степень, возвращает baseexponent
Math.max
Возвращает наибольший из списка аргументов
Math.min
Возвращает наименьший из списка аргументов
Math.random
Возвращает псевдо-случайное число в интервале [0,1) - то есть между 0(включительно) и 1(не включая). Генератор случайных чисел инициализуется текущим временем.
Math.round
Возвращает значение, округленное до ближайшего целого числа
Math.sqrt
Возвращает квадратный корень из числа
Math.tan
Возвращает тангенс числа

Свойства

Math.E
Константа Эйлера, основание натурального логарифма. Приблизительно 2.718.
Math.LN2
Натуральный логарифм 2, приблизительно 0.693.
Math.LOG2E
Логарифм E по основанию 2, приблизительно 1.442
Math.LOG10E
Логарифм E по основанию 10, приблизительно 0.434
Math.PI
Отношение длины окружности к ее диаметру, приблизительно 3.14159.
Math.SQRT12
Квадратный корень из 1/2; иначе говоря, 1 поделить на корень из 2, приблизительно 0.707.
Math.SQRT2
Квадратный корень из 2, приблизительно 1.414.
Math.LN10
Натуральный логарифм 10, приблизительно 2.302.


Math.abs

Синтаксис

var abs = Math.abs(x);

Аргументы

x
числовой аргумент

Описание, примеры

Передача нечисловой строки или undefined/пустой переменной вернет NaN. Передача null вернет 0.

Пример:
Выделить все
Math.abs('-1');     // 1
Math.abs(-2);       // 2
Math.abs(null);     // 0
Math.abs("string"); // NaN
Math.abs();         // NaN


Math.acos

Синтаксис

Math.acos(x)

Аргументы

x
число

Описание, примеры

Если аргумент лежит за пределами промежутка от -1 до 1 - возвращает NaN.


Math.asin

Синтаксис

Math.asin(x)

Аргументы

x
число

Описание, примеры

Если аргумент лежит за пределами промежутка от -1 до 1 - возвращает NaN.


Math.atan

Синтаксис

Math.atan(x)

Аргументы

x
число

Описание, примеры

Возвращает числовое значение из промежутка от -pi/2 до pi/2


Math.atan2

Синтаксис

Math.atan2(y, x)

Аргументы

y,x
числа

Описание, примеры

Метод atan2 возвращает числовое значение между -PI и PI, представляющее собой угол Theta для точки (x,y). Это угол, отсчитываемый против часовой стрелки и измеряемый в радианах, между положительным лучом оси X и точкой (x,y). Заметим, что порядок аргументов у этой функции такой, что координата по Y передается первой, а по X - второй.

Методу atan2 передаются отдельно значения x и y, а (atan) - отношение этих двух аргументов.


Math.ceil

Синтаксис

Math.ceil(x)

Аргументы

x
число

Описание, примеры

Возвращает наименьшее целое, большее или равное аргументу


Math.floor

Синтаксис

Math.ceil(x)

Аргументы

x
число

Описание, примеры

Возвращает наибольшее целое, меньшее или равное аргументу


Math.cos

Синтаксис

Math.cos(x)

Аргументы

x
число

Описание, примеры

Возвращает значение из интервала от -1 до 1, которое является косинусом аргумента.


Math.sin

Синтаксис

Math.sin(x)

Аргументы

x
число

Описание, примеры

Возвращает значение из интервала от -1 до 1, которое является синусом аргумента.


Math.exp

Синтаксис

Math.exp(x)

Аргументы

x
число

Описание, примеры

Пример:
Math.exp(1) == Math.E


Math.log

Синтаксис

Math.log(x)

Аргументы

x
число

Описание, примеры


Math.pow

Синтаксис

Math.pow(base, exponent)

Аргументы

base
число
exponent
степень

Описание, примеры

Пример:
Math.exp(1) == Math.E


Math.max

Синтаксис

Math.max([value1[,value2[, ...]]])

Аргументы

value1, value2, ...
числа

Описание, примеры

Если аргументов нет, то результатом является -Infinity.

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


Math.min

Синтаксис

Math.min([value1[,value2[, ...]]])

Аргументы

value1, value2, ...
числа

Описание, примеры

Если аргументов нет, то результатом является Infinity.

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


Math.random

Синтаксис

var randomNumber = Math.random();

Аргументы

Описание, примеры

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

Пример: Cлучайное число от 0(включительно) до 1
function getRandom()
{
  return Math.random();
}
Пример: Случайное число между min и max
function getRandomArbitary(min, max)
{
  return Math.random() * (max - min) + min;
}
Пример: Случайное целое между min и max
Выделить все
// использование Math.round() даст неравномерное распределение!
function getRandomInt(min, max)
{
  return Math.floor(Math.random() * (max - min + 1)) + min;
}


Math.round

Синтаксис

Math.round(x)

Аргументы

x
число

Описание, примеры

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

Пример:
Выделить все
// возвратит 20
x=Math.round(20.49)

// возвратит 21
x=Math.round(20.5)

// возвратит -20
x=Math.round(-20.5)

// возвратит -21
x=Math.round(-20.51)


Math.sqrt

Синтаксис

Math.sqrt(x)

Аргументы

x
число

Описание, примеры


Math.tan

Синтаксис

Math.tan(x)

Аргументы

x
число

Описание, примеры

Возвращает численное значение для тангенса угла в радианах.


Math.E

Константа Эйлера, основание натурального логарифма. Приблизительно 2.718.


Math.LN2

Натуральный логарифм 2, приблизительно 0.693.


Math.LOG2E

Логарифм E по основанию 2, приблизительно 1.442


Math.LOG10E

Логарифм E по основанию 10, приблизительно 0.434


Math.PI

Отношение длины окружности к ее диаметру, приблизительно 3.14159.


Math.SQRT12

Квадратный корень из 1/2; иначе говоря, 1 поделить на корень из 2, приблизительно 0.707.


Math.SQRT2

Квадратный корень из 2, приблизительно 1.414.


Math.LN10

Натуральный логарифм 10, приблизительно 2.302.


Number

Создание

numObj = new Number(value) // не используется
numObj = Number(value)
// обычно используются статические методы Number.*

Аргументы

value
значение для преобразование в тип Number

Описание, примеры

При необходимости, javascript сам создает Number объекты из числовых значений. Создавать объекты Number в явном виде требуется редко.

Основное назначение Number объектов состоит в сборе свойств в один объект, а также в преобразовании к числу вызовом Number(value).

Методы

toFixed
Округляет число до фиксированного количество цифр после запятой. Возвращает строку.
toPrecision
Округляет число до указанного общего количества цифр
toExponential
Возвращает строку с записю числа в экспоненциальном виде
toString
Возвращает строковое представление объекта.

Свойства

Number.MAX_VALUE
Возвращает наибольшее число, которое может быть представлено в яваскрипт. Примерно равно 1.79E+308.
Number.MIN_VALUE
Возвращает ближайшее к нулю число, представимое в яваскрипт. Примерно равно 5.00E-324.
Number.NaN
Особое значение Not-A-Number, которое указывает, что арифметическое выражение возвратило значение, не являющееся числом.
Number.NEGATIVE_INFINITY
Возвращает значение, которое меньше любого отрицательного числа, которое может быть представлено в яваскрипт.
Number.POSITIVE_INFINITY
Возвращает значение, большее любого числа, которое может быть представлено в яваскрипт

См. также

  • NaN /Свойство/
  • Math /Объект/


toFixed

Синтаксис

numObj.toFixed([fractionDigits])

Аргументы

fractionDigits
Необязательный. Количество цифр после десятичного знака. Это число должно находиться в диапазоне от 0 до 20 включительно. Если не указано, то считается равным 0

Описание, примеры

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

Если число больше 1e+21, то метод просто вызывает Number.toString() и возвращает строку в экспоненциальной записи.

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

Инициирует исключение TypeError, если объект не является Number.

Пример:
Выделить все
var n = 12345.6789;
n.toFixed();              // 12346: округление, длина дробной части ноль

n.toFixed(1);             // 12345.7: округление

n.toFixed(6);             // 12345.678900: добили нулями

(1.23e+20).toFixed(2);    // 123000000000000000000.00

(1.23e-10).toFixed(2)     // 0.00


toPrecision

Синтаксис

numObj.toPrecision ([precision])

Аргументы

precision
Необязательный. Число значащих цифр. Должно быть в диапазоне 1 – 21, включительно.

Описание, примеры

Округляет до общего количества цифр вне зависимости: после запятой или нет.

Пример:
Number("60").toPrecision(3)  // = 60.0
Number("60.1234").toPrecision(3)  // = 60.1

Если указанное значение precision не достижимо обрезанием десятичной части - переводит число в экспоненциальную форму.

Пример:
Number("60.1234").toPrecision(1) // 6e+1


toExponential

Синтаксис

number.toExponential( [fractionDigits] )

Аргументы

fractionDigits
Количество цифр после запятой. По умолчанию - без округлений

Описание, примеры

Число в экспоненциальной записи возвращается в виде строки с одной цифрой до десятичной точки и округляется до fractionDigits цифр после десятичной точки.

Если аргумент fractionDigits не указан, то берется столько цифр после десятичной точки, сколько необходимо.

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

Пример:
Выделить все
var num=77.1234;

alert(num.toExponential()) // 7.71234e+1
alert(num.toExponential(4)) // 7.7123e+1
alert(num.toExponential(2)) // 7.71e+1


toString

Синтаксис

objectname.toString([radix])

Аргументы

radix
Необязательный. Указывает основание для преобразования числовых значений в строки. От 2 до 36. По умолчанию 10.

Описание, примеры

Метод toString объекта Number перекрывает стандартный метод Object#toString.

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

Пример:
Выделить все
var count = 10;
print(count.toString());   // "10"
print((17).toString());    // "17"

var x = 7;
print(x.toString(2));      // "111"


Number.MAX_VALUE

Возвращает наибольшее число, которое может быть представлено в яваскрипт. Примерно равно 1.79E+308.


Number.MIN_VALUE

Возвращает ближайшее к нулю число, представимое в яваскрипт. Примерно равно 5.00E-324.


Number.NaN

Особое значение Not-A-Number, которое указывает, что арифметическое выражение возвратило значение, не являющееся числом.

Описание, примеры

Это значение заменяет собой ошибки вычислений.

Для проверки используется функция isNaN,

Пример: Деление на ноль
Выделить все
var n = 1/0   // NaN

// проверим
alert(NaN == NaN) // false
alert(isNaN(n)) // true


Number.NEGATIVE_INFINITY

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

Описание, примеры

Математически это значение ведет себя как отрицательная бесконечность. Оно меньше любого числа.

Пример:
alert(Number.NEGATIVE_INFINITY) // -Infinity

alert(Number.NEGATIVE_INFINITY < -99999) // true


Number.POSITIVE_INFINITY

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

Описание, примеры

Математически это значение ведет себя как бесконечность.

Пример:
alert(Number.POSITIVE_INFINITY > 9999999) // true


Object

Создание

Выделить все
obj = new Object( [value] )

// или, более часто
obj = {
  key1: val1,
  key2: val2,
  ...
}

Аргументы

keyN
Ключи ассоциативного массива
valN
Значения ассоциативного массива

Предоставляет общие методы для всех яваскрипт-объектов. Также используется как ассоциативный массив.

Методы

toString
Возвращает строковое представление объекта

Свойства

prototype
Прототип объекта

См. также

  • Объекты, ООП /Статья/
  • Встроенные объекты ECMAScript /Стандарт языка/


toString

Синтаксис

object.toString()

Аргументы

Описание, примеры

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

Например, это произойдет в вызовах:

Выделить все
// alert требует строку,
// поэтому произойдет неявный вызов obj.toString
alert(obj)

// операция объединения строк сделает строку из obj
var s = 'Объект в виде строки:'+obj

Объект Object предоставляет базовый метод toString, который обычно перекрывается наследующими от Object объектами.

По умолчанию, если этот метод не перекрыт объектом-наследником Object - он возвращает "[object <тип объекта>]".

Пример:
var o = new Object();
alert(o.toString())  // [object Object]

Каждый основной объект яваскрипт обладает своим собственным методом toString, например:

var d = new Date()
alert(d) // выведет d.toString()

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

Пример: До перекрытия метода toString
Выделить все
function Dog(name,color) {
   this.name=name
   this.color=color
}

theDog = new Dog("Барбос","черный");

Если вызвать метод toString сейчас, то он вернет [object Object].

Для изменения этого поведения добавим в прототип свой метод toString:

Пример: После перекрытия метода toString
Выделить все
Dog.prototype.toString = function() {
  return "Собака " + this.name + ", цвет:" + this.color
}

theDog = new Dog("Барбос","черный");

alert(theDog) // => "Собака Барбос, цвет: черный"

Каждый раз, когда объект theDog будет использован в качестве строки, яваскрипт автоматически вызовет метод toString, который вернет "Собака Барбос, цвет: черный".


prototype

Прототип объекта

Описание, примеры

Все объекты в javascript наследуют от Object, и потому имеют свойство .

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

Предположим, что нам требуется добавить в объект Array метод, который возвращает значение наибольшего элемента массива. Для этого объявляется функция, которая добавляется к объекту Array.prototype, а затем используется.

Пример: Добавляем метод объектам Array
Выделить все
function array_max( ){
   var i, max = this[0];
   for (i = 1; i < this.length; i++) {
   if (max < this[i])
   max = this[i];
   }
   return max;
}
Array.prototype.max = array_max;

// а теперь создадим новый массив
// и запустим новый метод
var x = [ 1, 2, 3, 4, 5, 6]
var y = x.max( );


RangeError

Создание

new RangeError(message)

Аргументы

message
сообщение об ошибке

Ошибка RangeError возникает при попытке передать качестве аргумента функции число, выходящее за рамки допустимого числового диапазона.

Она может произойти при попытке создать массив некорректной длины с помощью конструктора Array или при передаче плохих значений числовым функциям toExponential, toFixed, toPrecision.

Наследует

Error

См. также

  • Array /Объект/
  • toFixed /Метод/
  • toPrecision /Метод/
  • toExponential /Метод/


ReferenceError

Создание

new ReferenceError(message)

Аргументы

message
сообщение об ошибке

Ошибка ReferenceError генерируется при попытке обратиться к переменной, которая не была объявлена.

Наследует

Error


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' nor '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"

Методы

toString
Возвращает строковое представление регулярного выражения
test
Выполняет поиск совпадений регулярного выражения со строкой. Возвращает true или false
exec
Выполняет поиск совпадений в указанной строке. Возвращает массив результатов или null

Свойства

global
Был ли использован в регулярном выражении флаг "g"
ignoreCase
Был ли использован в регулярном выражении флаг "i"
multiline
Следует ли использовать поиск по всем строкам.
lastIndex
Доступное на запись целочисленное свойство, которое указывает индекс, с которого начинать следующий поиск match.
source
Неизменяемое свойство, которое содержит текст поискового выражения, исключая слэши

См. также

  • Регулярные выражения /Статья/
  • Встроенные объекты ECMAScript /Стандарт языка/


toString

Синтаксис

regexp.toString()

Аргументы

Описание, примеры

RegExp перекрывает свойство (Object.toString) и по-своему выводит строковое представление объекта.

Например:

myExp = new RegExp("a+b+c")
alert(myExp.toString())  // выведет "/a+b+c/"


test

Синтаксис

regexp.test([str])

Аргументы

str
текст, в котором искать

Описание, примеры

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

Чтобы получить сами совпадения - используйте exec или String#match.

Следующий пример выводит сообщение, в зависимости от наличия совпадений:

Выделить все
function testinput(re, str){
   if (re.test(str))
      midstring = " содержит ";
   else
      midstring = " не содержит ";
   document.write (str + midstring + re.source);
}


exec

Синтаксис

var result1 = regexp.exec(str)
var result2 = regexp.exec(str)

Аргументы

str
текст, в котором искать

Описание, примеры

Выполняет поиск совпадений в указанной строке. Возвращает массив результатов или null

Если вы хотите просто проверить, есть ли совпадения, используйте для этого метод test или String#search.

Метод exec при совпадении возвращает массив и обновляет свойства объекта regexp. Если совпадений нет - exec возвращает null.

Если указан флаг "g", то повторный вызов exec будет давать следующее совпадение.

regexp = /a+(b+(c+))/g
str = "abc aabbcc"
result1 = regexp.exec(str)
result2 = regexp.exec(str)
result1
Вложенный массив совпадений ["abc", "bc", "c"]
regexp.lastIndex после result1
3
result2
Вложенный массив совпадений ["aabbcc", "bbcc", "cc"]
regexp.lastIndex после result2
10

Это происходит за счет автоматического обновления при выполнении exec индекса конца последнего поиска lastIndex. Следующий поиск начинается от lastIndex.

Например, следующий скрипт выдает все совпадения:

Выделить все
var myRe = /ab*/g;
var str = "abbcdefabh";
var myArray;
while ((myArray = myRe.exec(str)) != null)
{
  var msg = "Нашел " + myArray[0] + ".  ";
  msg += "Следующий поиск начнется с " + myRe.lastIndex;
  document.write(msg);
}

Он выведет текст:

Нашел abb. Следующий поиск начнется с 3
Нашел ab. Следующий поиск начнется с 9

Вы можете вызвать exec при неявном определении объекта RegExp:

var matches = /(hello \S+)/.exec('This is a hello world!');
alert(matches[1]);


global

Был ли использован в регулярном выражении флаг "g"

Описание, примеры

Свойство global есть у каждого объекта регулярного выражения.

Значение global - true, если был использован флаг "g", иначе - false. Флаг "g" указывает, что регулярное выражение необходимо проверить на все возможные совпадения со строкой.

Вы не можете изменять это свойство напрямую.


ignoreCase

Был ли использован в регулярном выражении флаг "i"

Описание, примеры

Свойство ignoreCase есть у каждого объекта регулярного выражения.

Значение ignoreCase - true, если был использован флаг "i", иначе - false. Флаг "i" указывает, что следует игнорировать регистр символов при поиске совпадений.

Вы не можете изменять это свойство напрямую.


multiline

Следует ли использовать поиск по всем строкам.

Описание, примеры

Свойство multiline есть у каждого объекта регулярного выражения.

Значение multiline - true, если был использован флаг "m", иначе - false.

Если указан флаг "m", то спецсимволы "^" и "$" меняют свое значение с начала и конца всего текста на начало и конец произвольной строки в тексте.

Вы не можете изменять это свойство напрямую.


lastIndex

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

Описание, примеры

Свойство lastIndex есть у каждого объекта типа RegExp.

Оно установлено только если в регулярном выражении указан флаг "g", обозначающий глобальный поиск.

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

Выделить все
re = /a+/g;
re.exec("a aa") // вернет ["a"]
re.lastIndex // 1
re.exec("a aa") // вернет ["aa"]
re.lastIndex // 4

Вы можете ставить это свойство напрямую.


source

Неизменяемое свойство, которое содержит текст поискового выражения, исключая слэши

Описание, примеры

Свойство source есть у каждого объекта типа RegExp.

Вы не можете напрямую менять это свойство.


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) // "ока"

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

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

Методы

split
Делит строку на массив, разбивая ее по указанной подстроке
substr
Возвращает подстроку по начальной позиции и длине. Не описан в стандарте языка
charCodeAt
Возвращает число, обозначающее значение символа в кодировке Unicode по указанной позиции
String.fromCharCode
Создает строку из указанных юникодных значений.
charAt
Возвращает символ на указанной позиции в строке
concat
Возвращает объединение двух или более строк
indexOf
Возвращает позицию, на которой внутри вызывающей строки находится первое искомое значение, начиная от fromIndex. Возвращает -1, если значение не найдено.
lastIndexOf
Возвращает последнюю позицию, на которой в вызывающей строке находится указанная подстрока, или -1, если такой позиции нет. Поиск идет назад, начиная от fromIndex
search
Возвращает позицию, на которой регулярное выражение совпадает с вызывающей строкой, и -1, если совпадений нет
match
Получить все совпадения с регулярным выражением
replace
Замещает совпадения с регулярным выражением на новую подстроку
slice
Возвращает участок строки
substring
Возвращает подстроку строки. Стандартный метод.
toLowerCase
Возвращает вызывающую строку, приведенную к нижнему регистру по правилам Unicode
toUpperCase
Возвращает вызывающую строку, приведенную к верхнему регистру по правилам Unicode
toLocaleLowerCase
Возвращает вызывающую строку, приведенную к нижнему регистру по правилам текущего окружения
toLocaleUpperCase
Возвращает вызывающую строку, приведенную к верхнему регистру по правилам текущего окружения
toString
Возвращает строку
valueOf
Возвращает элементарную строку для вызывающего объекта строки

Свойства

length
Длина строки

См. также

  • Базовые типы: Строки, Числа, Boolean /Статья/
  • Встроенные объекты ECMAScript /Стандарт языка/


split

Синтаксис

var arr = str.split([separator][, limit]);

Аргументы

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

Описание, примеры

Метод split возвращает новый массив.

Строка бьется по separator, при разбивании separator пропадает:

Пример:
arr = "a,b,c".split(',')  // массив ["a", "b", "c"]

Если separator не указан или совпадений нет, то возвращаемый массив состоит из одного элемента - исходной строки.

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

Если вызывающая строка пуста, то split возвращает массив из одной пустой строки, а не пустой массив.

Следующий пример делит по ',' и убирает лишние пробелы вокруг запятой.

Пример: по регулярному выражению
var tags = "Лето, зима, осень 2009 года"
var re = /\s*,\s*/
var tagList = tags.split(re);
alert(tagList) //  ["Лето", "зима", "осень 2009 года"]

При делении с ограничением limit - элементы массива свыше limit будут отброшены.

Это поведение отличается от принятого во многих языках програмирования.

Пример: Ограничение массива
var str ="a b с d"
str.split(' ',2)
// ["a", "b"], а не ["a" "b c d"]

Следующий пример иллюстрирует добавление в массив результатов захвата вложенными скобками.

Пример: Вложенные скобки
var myString = "Hello 1 word. Sentence number 2."
var splits = myString.split(/(\d)/)
// splits =  ["Hello ", "1", " word. Sentence number ", "2", "."]

Благодаря скобкам, найденный разделитель separator сохранился и вошел в результирующий массив.

См. также

  • join /Метод/


substr

Синтаксис

var sub = string.substr(start[, length])

Аргументы

start
начальная позиция, начиная от 0
length
сколько символов брать с позиции start

Описание, примеры

Этот метод описан только в ненормативной части стандарта ECMA, но реализован в большинстве браузеров.

Метод substr начинает собирать строку с позиции start и заканчивает, когда соберет length или дойдет до конца строки.

Если start больше или равен длине строки, то substr возвращает пустую строку.

Если start < 0, позиция определяется с конца строки. При этом если полученная позиция - до начала строки, то в качестве start берется 0. Это поведение не поддерживается Internet Explorer.

Если параметр length не указан - подстрока берется до конца строки.

Если length <= 0 - возвращается пустая строка.

Пример:
Выделить все
var str = "abcdefghij";
alert("(1,2): "    + str.substr(1,2));
alert("(-3,2): "   + str.substr(-3,2));
alert("(-3): "     + str.substr(-3));
alert("(1): "      + str.substr(1));
alert("(-20, 2): " + str.substr(-20,2));
alert("(20, 2): "  + str.substr(20,2));

Последовательно выведет:

Выделить все
(1,2): bc
(-3,2): hi
(-3): hij
(1): bcdefghij
(-20, 2): ab
(20, 2):

См. также

  • substring /Метод/


charCodeAt

Синтаксис

var codepoint = string.charCodeAt(index)

Аргументы

index
целое число от 0 до длины строки-1

Описание, примеры

Юникодное значение от 0 до 1,114,111. Первые 128 значений Unicode совпадают с кодировкой ASCII.

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

Из-за этого, чтобы получить полный символ для символов, юникод-значение которых больше или равно 65536, необходимо получить не только charCodeAt(0), но и charCodeAt(1) (как для строки из двух букв).

Пример:
Выделить все
function fixedCharCodeAt (str, idx) {
    var code = str.charCodeAt(idx);
    if (0xD800 <= code && code <= 0xDBFF) {
        // Верхний вспомогательный символ
        var hi = code;
        var low = str.charCodeAt(idx+1);
        return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
    }
    if (0xDC00 <= code && code <= 0xDFFF) {
       // Нижний вспомогательный символ
        var hi = str.charCodeAt(idx-1);
        var low = code;
        return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
    }
    return code;
}
alert(fixedCharCodeAt ('\uD800\uDC00', 0)); // 65536
alert(fixedCharCodeAt ('\uD800\uDC00', 1)); // 65536

charCodeAt() возвращает NaN, если указанный индекс меньше нуля или больше/равен длине строки.

Пример: Использование charCodeAt
// возвратит 65, unicode-код для А
"ABC".charCodeAt(0) // 65

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

Пример:
Выделить все
var str = 'A\uD800\uDC00Z' // 2 символа
// мы могли объявить сложный символ напрямую,
// т.к наш javascript-код имеет кодировку UTF.
for (var i=0, chr; i < str.length; i++) {
    if ((chr = getWholeChar(str, i)) === false) {
        continue // на позиции i вспомогательный символ
    }
    // alert будет последовательно вызван для всех символов
    alert(chr);
}

function getWholeChar (str, i) {
    var code = str.charCodeAt(i);
    if (0xD800 <= code && code <= 0xDBFF) {
        // верхний вспомогательный
        if (str.length <= (i+1))  {
            throw 'High surrogate without following low surrogate';
        }
        var next = str.charCodeAt(i+1);
        if (0xDC00 > next || next > 0xDFFF) {
            throw 'High surrogate without following low surrogate';
        }
        return str[i]+str[i+1];
    }
    else if (0xDC00 <= code && code <= 0xDFFF) {
       // Нижний вспомогательный
        if (i === 0) {
            throw 'Low surrogate without preceding high surrogate';
        }
        var prev = str.charCodeAt(i-1);
        if (0xD800 > prev || prev > 0xDBFF) {
            throw 'Low surrogate without preceding high surrogate';
        }
        return false;
    }
    return str[i] // используем обращение к строке как к массиву
}


String.fromCharCode

Синтаксис

String.fromCharCode(num1, ..., numN)

Аргументы

num1, ..., numN
последовательность чисел, представляющих собой коды Unicode-символов

Описание, примеры

Этот метод возвращает элементарную строку, а не объект типа String.

Так как fromCharCode - статический метод String, он всегда вызывается как String.fromCharCode().

Хотя наиболее частые значения в юникоде могут быть представлены одним числом (как задумано в ранних стандартах яваскрипт), и fromCharCode() можно использовать, чтобы получить один символ для частых значений (т.е значений UCS-2, которые являются подмножеством UTF-16), но для ВСЕХ юникодных значений одного fromCharCode() не хватает.

Так как более редкие символы кодируются в юникоде с использованием пары чисел, fromCharCode() можно использовать для возврата этой пары, и, таким образом, получения нужного значения.

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

Выделить все
function fixedFromCharCode (codePt) {
  if (codePt > 0xFFFF) {
    codePt -= 0x10000;
    return String.fromCharCode(0xD800 + (codePt >> 10), 0xDC00 + (codePt & 0x3FF));
  } else {
    return String.fromCharCode(codePt);
  }
}
Пример: Использование fromCharCode
// вернет строку "ABC".
String.fromCharCode(65,66,67)


charAt

Синтаксис

str.charAt(index)

Аргументы

index
Целое число от 0 до количества символов в строке минус 1

Описание, примеры

Символы идут слева направо. Первый символ имеет позицию 0, а последний string.length-1.

Если указанный index лежит за пределами этого диапазона, яваскрипт вернет пустую строку.

Пример: перечисление символов в строке
Выделить все
var anyString="Привет, мир"

document.writeln("Символ на позиции 0 '" + anyString.charAt(0) + "'")
document.writeln("Символ на позиции 1 '" + anyString.charAt(1) + "'")
document.writeln("Символ на позиции 2 '" + anyString.charAt(2) + "'")
document.writeln("Символ на позиции 3 '" + anyString.charAt(3) + "'")
document.writeln("Символ на позиции 4 '" + anyString.charAt(4) + "'")
document.writeln("Символ на позиции 999 '" + anyString.charAt(999) + "'")

Выведет:

Выделить все
Символ на позиции 0 'П'
Символ на позиции 1 'р'
Символ на позиции 2 'и'
Символ на позиции 3 'в'
Символ на позиции 4 'е'
Символ на позиции 999 ''


concat

Синтаксис

result = string1.concat(string2, string3[, ..., stringN])

Аргументы

string2...stringN
сроки, которые будут прибавлены к string1

Описание, примеры

Выполняет действие, аналогичное оператору + для строк.

Выделить все
a = "строка"
b = " очень"
с = " длинная"

alert(a.concat(b,c)) // строка очень длинная


indexOf

Синтаксис

str.indexOf(searchValue[, fromIndex])

Аргументы

searchValue
искомая подстрока
fromIndex
позиция, с которой начинать поиск: от 0 до длины строки-1

Описание, примеры

Символы в строке идут слева направо. Позиция первого 0, последнего - на единицу меньше, чем длина строки.

Метод чувствителен к регистру символов.

Пример:
"Привет, мир".indexOf("Привет")    // вернет 0
"Привет, мир".indexOf("Корова")    // вернет -1
"Привет, мир".indexOf("мир")    // вернет 8
"Привет, мир".indexOf("Мир") // вернет -1
Пример: с позицией
"Привет, мир".indexOf("Привет",0)    // вернет 0
"Привет, мир".indexOf("р",1)    // вернет 1
"Привет, мир".indexOf("р",5)    // вернет 10
Пример: для пустой подстроки
"Привет, мир".indexOf("",5)    // вернет 5
"Привет, мир".indexOf("",7)    // вернет 7
"Привет, мир".indexOf("",999)    // вернет 11 (длину)

Следующий пример демонстрирует использование indexOf для подсчета количества повторений буквы в строке.

Пример:
Выделить все
count = 0;
pos = str.indexOf("x");
while ( pos != -1 ) {
   count++;
   pos = str.indexOf("x",pos+1);
}


lastIndexOf

Синтаксис

str.lastIndexOf(searchValue[, fromIndex])

Аргументы

searchValue
искомая подстрока
fromIndex
индекс, от которого начинать поиск по направлению к началу строки. От 0 до str.length-1. Значение по умолчанию: str.length

Описание, примеры

Символы в строке идут слева направо. Позиция первого символа 0, последнего - длина строки минус один.

Пример:
"canal".lastIndexOf("a")   // 3
"canal".lastIndexOf("a",2) // 1
"canal".lastIndexOf("a",0) // -1
"canal".lastIndexOf("x")   // -1

Метод lastIndexOf чувствителен к регистру символов.

Пример: регистр важен
"Привет".lastIndexOf("п") // -1


search

Синтаксис

idx = str.search(regexp)

Аргументы

regexp
объект типа RegExp или строка

Описание, примеры

Этот метод удобен, когда нужно проверить, есть ли совпадения с регулярным выражением (аналогично RegExp#test).

Чтобы получить больше информации, используйте более медленный метод match (или родственный ему метод RegExp#exec).

Пример: Проверка на совпадение
Выделить все
function testinput(re, str){
   if (str.search(re) != -1)
      return true
   else
      return false
}
alert(testinput(/something/, "somestr")) // false


match

Синтаксис

str.match(regexp)

Аргументы

regexp
регулярное выражение в виде объекта RegExp или строка

Описание, примеры

Если регулярное выражение без флага "g", то возвращает такое же результат, как regexp.exec(str).

Если же для регулярного выражения указан флаг "g", то метод возвращает массив, содержащий все совпадения.

Если совпадений нет, то метод возвращает не пустой массив, а null.

Замечания

  • Если вы хотите только проверить, совпадает ли строка с регулярным выражением - используйсте regexp.test(string).
  • Если вам нужно только первое совпадение - вам может лучше подойти regexp.exec(string)

Пример без глобального поиска

В следующем примере match используется для поиска строки "Глава", за которой идет 1 или групп из цифр с последующей точкой.

str = "За информацией обратитесь: Глава 3.4.5.1";
re = /глава (\d+(\.\d)*)/i
found = str.match(re)
document.write(found)

Возвратит массив из трех элементов:

["Глава 3.4.5.1", "3.4.5.1", ".1"]
  1. "Глава 3.4.5.1" - полное совпадение с регулярным выражением /глава (\d+(\.\d)*)/i,
  2. "3.4.5.1" - первая скобка в совпадении,
  3. ".1" - вторая скобка в совпадении

Пример с глобальным поиском

При глобальном поиске регультат match - просто массив всех совпадений (и null, если их нет).

str = "За информацией обратитесь: Глава 3.4.5.1, Глава 7.5";
re = /глава (\d+(\.\d)*)/ig
found = str.match(re)
alert(found)

Выведет массив из двух элементов:

[ "Глава 3.4.5.1", "Глава 7.5" ]

Скобки при таком поиске не учитываются.

Если вам нужен глобальный поиск с учетом скобок - используйте многократный вызов exec.


replace

Синтаксис

str.replace(regexp, newSubStr|function)

Аргументы

regexp
объект типа RegExp или строка
newSubStr|function
новая подстрока или функция, которая ее возвращает

Описание, примеры

Этот метод не меняет вызывающую строку, а возвращает новую, после замен.

Чтобы произвести глобальны поиск и замену, используйте regexp c флагом "g".

Строка замены

Если вы указываете строку как второй параметр - она может включать в себя следующие специальные сочетания:

$$
Вставляет "$"
$&
Вставляет совпавшую подстроку
$`
Вставляет часть строки, которая предшествует совпавшей подстроке
$'
Вставляет часть строки, которая следует за совпавшей подстрокой
$n или $nn, где n/nn - десятичные цифры
Вставляет n-ю скобку в совпадении, если первый аргумент - объект RegExp

Функция замены

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

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

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

Если при вызове replace указано регулярное выражение, а не строка, то последующие параметры будут содержать значения скобочных групп.

Наконец, последние два параметра - позиция, на которой произошло совпадения и вызывающая строка.

Следующий пример вернет my XX, zz.

Пример:
Выделить все
function replacer(str, p1, p2, offset, s) {
  return p1 + ", " + p2;
}

newString = "my XXzz".replace(/(X+)(z+)/, replacer)

Значения параметров при вызове replacer:

str
"XXzz" - совпавшая подстрока
p1
"XX" - первая скобка
p2
"zz" - вторая скобка
offset
3 - позиция в тексте для поиска
s
"my XXzz" - вызывающая строка, т.е строка для поиска

В следующем примере используется строка замены. Глобального поиска при этом не происходит.

Пример: строка замены
str = "тест еще тест"
str.replace("тест","прошел") // = "прошел еще тест"

Для глобального поиска используйте регулярное выражение.

Пример: Глобальная замена строки
str = "тест еще тест"
str.replace(/тест/g,"прошел") // = "прошел еще прошел"
// или так
str.replace(new RegExp("тест",'g'),"прошел")

Следующий пример использует при замене сочетания $1 и $2 для ссылок на результат поиска.

Пример: Замена со ссылками
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1") // "Smith, John"


slice

Синтаксис

var sub = string.slice(beginSlice[, endSlice])

Аргументы

beginSlice
позиция, начиная от 0, с которой начинается участок
endSlice
позиция, на которой заканчивается участок

Описание, примеры

Метод slice возвращает част строки от beginSlice до, но не включая endSlice, не меняя вызывающую строку.

Например, string.slice(1,4) возвратит участок строку со 2го по 4й символы, т.е из символов с позицией 1, 2 и 3.

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

Например, string.slice(2,-1) вернет участок строки, начиная от 3го символа (с индексом 2), и кончая предпоследним.

Пример:
var str ="Вот такая строка"
str.slice(0,2) // "Во"
str.slice(1,-1) // "от такая сток"


substring

Синтаксис

str.substring(indexA, [indexB])

Аргументы

indexA
целое число от 0 до длины строки-1
indexB
целое число от 0 до длины строки-1

Описание, примеры

Метод substring возвращает подстроку, начиная с позиции indexA до, но не включая indexB.

В частности:

  • Если indexA = indexB, возвращается пустая строка
  • Если indexB не указан, substring возвращает символы до конца строки
  • Если какой-то из аргументов меньше 0 или является NaN - он считается равным 0
  • Если какой-то из аргументов больше, чем длина строки - он считается равным длине строки

Если indexA > indexB, тогда substring ведет себя, как будто аргументы поменялись местами.

Например, str.substring(1, 0) == str.substring(0, 1).

Пример:
Выделить все
var str = "Моя строка"
str.substring(0,3) // Моя
str.substring(3,0) // Моя
str.substring(1,2) // о
str.substring(3) // "строка"


toLowerCase

Синтаксис

str.toLowerCase()

Аргументы

Описание, примеры

Пример:
var upperText="ПриВет"
document.write(upperText.toLowerCase()) // привет


toUpperCase

Синтаксис

str.toUpperCase()

Аргументы

Описание, примеры

Пример:
var upperText="ПриВет"
document.write(upperText.toUpperCase()) // ПРИВЕТ


toLocaleLowerCase

Синтаксис

str.toLocaleLowerCase()

Аргументы

Описание, примеры

Обычно работает в точности как toLowerCase. Различия есть только для некоторых языков, например, для турецкого, правила которых противоречат соглашениям Unicode.

Для русского результаты совпадают.


toLocaleUpperCase

Синтаксис

str.toLocaleUpperCase()

Аргументы

Описание, примеры

Обычно работает в точности как toUpperCase. Различия есть только для некоторых языков, например, для турецкого, правила которых противоречат соглашениям Unicode.

Для русского результаты совпадают.


toString

Синтаксис

str.toString()

Аргументы

Описание, примеры

Перекрывает соответствующий метод Object#toString, возвращает элементарную строку.


valueOf

Синтаксис

str.valueOf()

Аргументы

Описание, примеры

Метод valueOf возвращает элементарное значение для объекта String. Это значение эквивалентно String#toString.

Обычно этот метод вызывается неявно, внутри интерпретатора javascript, а не в коде.

Пример:
x = new String("Hello world");
alert(x.valueOf())          // покажет"Hello world"


length

Длина строки

Описание, примеры

Свойство содержит количество юникодных символов в строке. Для пустой строки, length равно 0.

Пример:
var x = "Тест"
alert("Длина равна " + x.length) // 4


SyntaxError

Создание

new SyntaxError(message)

Аргументы

message
сообщение об ошибке

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

Наследует

Error

См. также

  • eval /Метод/


TypeError

Создание

new TypeError(message)

Аргументы

message
сообщение об ошибке

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

Наследует

Error

См. также

  • apply /Метод/
  • call /Метод/


URIError

Создание

new URIError(message)

Аргументы

message
сообщение об ошибке

Ошибка URIError инициируется, когда в функцию, принимающую URI, передан некорректный URI.

Наследует

Error

См. также

  • encodeURI /Метод/
  • encodeURIComponent /Метод/
  • decodeURI /Метод/
  • decodeURIComponent /Метод/


window

Объект window сочетает два в одном: глобальный объект javascript и окно браузера.

Для обращения к функциям и методам window не нужно указывать объект:

window.decodeURI(..)
// то же что и
decodeURI(..)

Вообще, любая переменная в конечном счете(если не найдена локально) ищется в глобальном объекте.

// можно указать window явно - будет работать:
a = new window.String("test")

Да, и кстати window является свойством window:

xhr = new window.window.window.XMLHttpRequest()

Кроме роли "глобального объекта", window также предоставляет интерфейс для работы с окном браузера.

Методы

window.close
Закрыть окно браузера
window.open
Открыть новое окно браузера и загрузить в него указанный ресурс
window.focus
Сделать вызвавшее окно активным

Свойства

window.location
Получает/устанавливает URL окна и его компоненты
window.parent
Родительское окно в иерархии фреймов
window.top
Ссылка на верхнее окно в иерархии фреймов
window.name
имя окна
window.frames
список фреймов текущего окна, включая iframe
window.opener
окно, открывшее текущее вызовом window.open
window.closed
Закрыто ли данное окно, используется с window.open
window.status
Позволяет устанавливать и получать статусную строку окна


window.close

Синтаксис

window.close()
newWin.close()

Аргументы

Описание, примеры

Если закрываемое окно не было открыто при помощи window.open, то
при его закрытии выводится предупреждение. Посетитель может отклонить закрытие.

Пример: закрытие окна
Выделить все
var openedWindow;

function openWindow() {
  openedWindow = window.open('moreinfo.html')
}

function closeOpenedWindow() {
  openedWindow.close()
}


window.open

Синтаксис

var newWin = window.open(strUrl, winName [, winParams])

Аргументы

strUrl
Адрес для загрузки в новое окно, любая адресная строка, которую поддерживает браузер
winName
Имя нового окна для использования в параметре target форм и ссылок
winParams
Необязательный список настроек, с которыми открывать новое окно

Описание, примеры

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

Если параметр strUrl - пустая строка, то в окно будет загружен пустой ресурс about:blank.

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

Связь между окнами

Метод open возвращает ссылку на новое окно, которая служит для обращения к нему и вызову его методов, если это соответствует ограничениям безопасности Same Origin.

Пример:
var params = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes"
window.open("http://ya.ru/", "Yandex", params)

Если окно с именем winName уже существует, то вместо открытия нового окна, strUrl загружается в существующее, ссылка на которое возвращается. При этом строка параметров не применяется.

В случае, когда окно удалить не удалось, например, оно заблокировано штатными Popup-blocker'ами Firefox/IE - вызов open вернет null.
Проверяйте его, если не хотите лишних ошибок в своих скритах.

Указание пустого strUrl для существующего имени окна - удобный способ получить ссылку на это окно без его перезагрузки.

Если вы хотите открывать новое окно при каждом вызове open() - используйте для winName специальное значение '_blank'.

Строка параметров

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

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

Если строка параметров указана, то не перечисленные в ней параметры будут отключены(кроме titlebar/close). Поэтому включите в ней свойства, которые нужны.

Если в параметрах не указаны размеры, то новое окно будет по размеру такое же, как последнее открытое.

Если не указана позиция нового окна, то оно откроется со сдвигом в 20-30 пикселей (зависит от браузера) от последнего открытого окна.
Такой сдвиг позволяет посетителю заметить, что открылось новое окно.
Если текущее окно максимизировано, то сдвига не будет: новое тоже будет максимизировано.

Основные кроссбраузерные параметры

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

left/top
Расстояние от левой/верхней границы окна операционной системы до границы нового окна. Новое окно не может быть создано за границами экрана
height/width
Высота/ширина в пикселях внутренности нового окна, включая полосы прокрутки, если они есть. Минимальное значение: 100
menubar
Если этот параметр установлен в yes, то в новом окне будет меню.
toolbar
Если этот параметр установлен в yes, то в новом окне будет навигация (кнопки назад, вперед и т.п.) и панель вкладок
location
Если этот параметр установлен в yes, то в новом окне будет адресная строка
directories
Если этот параметр установлен в yes, то в новом окне будут закладки/избранное
status
Если этот параметр установлен в yes, то в новом окне будет строка состояния
resizable
Если этот параметр установлен в yes, то пользователь сможет изменить размеры нового окна. Рекомендуется всегда устанавливать этот параметр.
scrollbars
Если этот параметр установлен в yes, то новое окно при необходимости сможет показывать полосы прокрутки
Пример:
Выделить все
var newWin = window.open("http://javascript.ru",
   "JSSite",
   "width=420,height=230,resizable=yes,scrollbars=yes,status=yes"
)

newWin.focus()

Заметки

Чтобы закрыть окно - используйте вызов window.close:

newWin.close()

Чтобы показать новое окно посетителю - используйте вызов window.focus:

newWin.focus()


window.focus

Синтаксис

win.focus()

Аргументы

Описание, примеры

Конкретная реализация этого метода зависит от операционной системы.

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

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


window.location

Получает/устанавливает URL окна и его компоненты

Описание, примеры

Значением этого свойства является объект типа Location.

Объект Location

Метод toString этого объекта возвращает URL, а различные свойства позволяют получить/установить отдельные компоненты адреса.

Для некоторых строковых операций необходимо явно преобразовать Location к строке:

window.location.toString().charAt(17)

Свойства объекта Location

Все следующие свойства являются строками.
Колонка "Пример" содержит их значения для URL:

  • http://www.google.com:80/search?q=javascript#test
Свойство | Описание | Пример
hash | часть URL, которая идет после символа решетки '#', включая символ '#' | #test
host | хост и порт | www.google.com:80
href | весь URL | http://www.google.com:80/search?q=javascript#test
hostname | хост (без порта) | www.google.com
pathname | строка пути (относительно хоста) | /search
port | номер порта | 80
protocol | протокол | http:
search | часть адреса после символа ?, включая символ ? | ?q=javascript

В Firefox есть баг: если hash-компонент адреса содержит закодированные (см. encodeURIComponent) символы, свойство hash возвращает раскодированный компонент. Например, вместо %20 будет пробел и т.п. Другие браузеры ведут себя корректно и не раскодируют hash.

Методы объекта Location

assign(url)
загрузить документ по данному url
reload([forceget])
перезагрузить документ по текущему URL. Аргумент forceget - булево значение, если оно true, то документ перезагружается всегда с сервера, если false или не указано, то браузер может взять страницу из своего кэша.
replace(url)
заменить текущий документ на документ по указанному url. Разница, по сравнению с assign() заключается в том, что после использования replace() страница не записывается в истории посещений. В частности, это значит, что посетитель не сможет использовать для возврата кнопку браузера "Назад".
toString()
возвращает строковое представление URL для объекта Location

При изменении любых свойств window.location, документ будет перезагружен, как если бы для модифицированного url был вызван метод window.location.assign().

Пример: перейти на документ по адресу
function goJs() {
   window.location = "http://javascript.ru"
}
Пример: вывести свойства текущего location
Выделить все
function showLoc() {
   var x = window.location;
   var t = ['Property - Typeof - Value',
            'window.location - ' + (typeof x) + ' - ' + x ];
   for (var prop in x){
     t.push(prop + ' - ' + (typeof x[prop]) + ' - ' +  (x[prop] || 'n/a'));
   }
   alert(t.join('\n'));
}

Пример: сделать запрос с новыми параметрами
function sendData(dat)
{
  window.location.search = dat;
}

При вызове sendData('My Data') на сервер оправится строка
с параметрами "?My%20Data".


window.parent

Родительское окно в иерархии фреймов

Описание, примеры

Непосредственный родитель текущего окна/фрейма.


window.top

Ссылка на верхнее окно в иерархии фреймов

Описание, примеры

В то время как свойство (window.parent)

возвращает непосредственного родителя window, свойство window.top дает самое верхнее окно в иерархии.

Это свойство особенно полезно, когда нужно из подфрейма дойти до верхнего фреймсета.


window.name

имя окна

Описание, примеры

Устанавливает/возвращает имя окна.

window.name = "tutorial_win"

Имя окна используется, преимущественно, для установки target гиперссылок и форм.

Вообще говоря, окно не обязано иметь имя.


window.frames

список фреймов текущего окна, включая iframe

Описание, примеры

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

frameList = window.frames

Список фреймов не является Array, но похож на массив в том смысле, что у него есть свойство length, и его элементы доступны по индексу [i].

Пример:
Выделить все
var frames = window.frames
for (var i = 0; i < frames.length; i++) {
  // сделать что-нибудь внутри i-го фрейма
  frames[i].document.body.style.background = "red"
}


window.opener

окно, открывшее текущее вызовом window.open

Описание, примеры

Если окно было открыто из другого окна, то оно сохраняет ссылку на него в свойстве window.opener.

Если такого окна нет, то window.opener = null.


window.closed

Закрыто ли данное окно, используется с window.open

Описание, примеры

При открытии нового окна(или повторном использовании существующего с тем же именем) метод (window#open) возвращает ссылку это окно.

newWin = window.open(....)

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

Выделить все
if (!newWin.closed) {
    newWin.document.write("Что-нибудь")
} else {
   alert("Вы почему окно закрыли, а?")
}


window.status

Позволяет устанавливать и получать статусную строку окна

Описание, примеры

Пример:
alert(window.status)
window.status = "Строка статуса"

Установка статуса не работает в конфигурации по умолчанию Firefox и ряда других браузеров.


Справочник: Глобальные методы

http://javascript.ru/manual/method

Глобальные методы

Кратко | Подробно
  • alert

    Выводит модальное окно с сообщением

  • clearInterval

    Останавливает выполнение кода, заданное setInterval

  • clearTimeout

    Отменяет выполнение кода, заданное setTimeout

  • confirm

    Выводит сообщение в окне с двумя кнопками: "ОК" и "ОТМЕНА" и возвращает выбор посетителя

  • decodeURI

    Раскодирует URI, закодированный при помощи encodeURI

  • decodeURIComponent

    Раскодирует URI, закодированный при помощи encodeURIComponent

  • encodeURI

    Кодирует URI, заменяя каждое вхождение определенных символов на escape-последовательности, представляющие символ в кодировке UTF-8.

  • encodeURIComponent

    Кодирует компоненту URI, заменяя определенные символы на соответствующие UTF-8 escape-последовательности

  • eval

    Выполняет строку javascript-кода без привязки к конкретному объекту.

  • isFinite

    возвращает, является ли аргумент конечным числом

  • isNaN

    Проверяет, является ли аргумент NaN

  • parseFloat

    преобразует строковой аргумент в число с плавающей точкой

  • parseInt

    преобразует строковой аргумент в целое число нужной системы счисления

  • prompt

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

  • setInterval

    Выполняет код или функцию через указанный интервал времени

  • setTimeout

    Выполняет код или функцию после указанной задержки


alert

Синтаксис

alert(message)

Аргументы

message
Текст сообщения

Описание, примеры

Выводит модальное окно с сообщением. Посетитель не сможет продолжить работу, пока не нажмет на кнопку "ОК" в модальном окне.

Пример:
alert('Добрый день')


clearInterval

Синтаксис

clearInterval(intervalID)

Аргументы

intervalID
Идентификатор, возвращенный setInterval

Описание, примеры

При передаче некорректного intervalID не инициирует ошибку.


clearTimeout

Синтаксис

clearTimeout(timeoutID)

Аргументы

timeoutID
идентификатор, возвращенный setTimeout

Описание, примеры

Отменяет выполнение кода.

При передаче несуществующего или уже выполненного timeoutID - ничего не происходит, исключение не генерируется.

Пример:
timeoutID = setTimeout(...)
...
clearTimeout(timeoutID)


confirm

Синтаксис

result = confirm(message)

Аргументы

message
Текст сообщения

Описание, примеры

Выводит сообщение в окне с двумя кнопками: "ОК" и "ОТМЕНА".

Возвращает true/false в зависимости от того, куда нажмет посетитель.

Как и alert, окно - модальное, то есть посетитель не может делать ничего другого, пока не выберет одну из кнопок.

Пример:
Выделить все
if (confirm("Сказать привет?")) {
  alert("Привет!")
} else {
  alert("Вы нажали кнопку отмена")
}


decodeURI

Синтаксис

uri = decodeURI(encodedURI)

Аргументы

encodedURI
URI, закодированный при помощи encodeURI

Описание, примеры

Заменяет каждую escape-последовательность в закодированном URI символом, который она представляет.

Не раскодирует escape-последовательности, которые не могли быть созданы encodeURI.


decodeURIComponent

Синтаксис

uri = decodeURIComponent(encodedURIComponent)

Аргументы

encodedURIComponent
URI, закодированный при помощи encodeURIComponent

Описание, примеры

Заменяет каждую escape-последовательность в закодированном URI символом, который она представляет.

Не раскодирует escape-последовательности, которые не могли быть созданы encodeURIComponent.


encodeURI

Синтаксис

encodeURI(URI)

Аргументы

URI
строка URI

Описание, примеры

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

Метод encodeURI заменяет все символы, исключая следующие, соответствующими им UTF-8 escape-последовательностями.

Тип
Включает в себя

Зарезервированные
; , / ? : @ & = + $

Незаменяемые символы
латинский алфавит, десятичные цифры, - _ . ! ~ * ' ( )

Значок решетки
#

Заметим, что encodeURI не может формировать данные для GET или POST-запросов, например, для XMLHttpRequest, так как "&", "+", и "=" не кодируются - а они являются специальными символами.

Их кодирует метод encodeURIComponent.


encodeURIComponent

Синтаксис

var encoded = encodeURIComponent(str)

Аргументы

str
компонент URI

Описание, примеры

Метод encodeURIComponent заменяет все символы, кроме:
символов латинского алфавита, десятичных цифр и - _ . ! ~ * ' ( ).

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

Например, пользователь может ввести "me&time=5" в переменной label. Без использования encodeURIComponent соответствующая компонента запроса будет иметь вид label=me&time=5.
Вместо одного значения label появилось два значения:
label=me и time=5.

Чтобы этого избежать, кодируйте данные перед передачей в URI:

label = 'me&you'
uri = uri + '&label=' + encodeURIComponent(label)


eval

Синтаксис

eval(codeStr)

Аргументы

codeStr
код для выполнения, может использовать переменные и свойства существующих объектов

Описание, примеры

Пример:
a = "alert(1)"
eval(a)

Метод eval возвращает значение последнего вычисленного выражения.

Пример:
var str = "if (a) { 1+1 } else { 1+2 }"
var a = true
var b = eval(str)
alert("b равно : " + b) // 2

// теперь поменяем "a"

a = false
b = eval(str)
alert("b равно : " + b) // 3

Если аргумент eval - не строка, то возвращается аргумент без изменения:

Пример:
r = new RegExp('a')
r == eval(r) // true

Можно обойти это прямым вызовом toString:

Пример:
function forceEval(obj) {
    return eval(obj.toString())
}

Не используйте eval

Выполнение кода в eval может быть небезопасно. При таком выполнении затруднена отладка. В современном javascript, как правило, можно воспользоваться другими языковыми средствами вместо eval.

eval для JSON

Как правило, eval используют для разбора формата JSON.

var = eval('('+json+')')

Такой способ небезопасен, но наиболее быстр.

Второй параметр

В старых реализациях javascript у eval мог быть второй параметр - объект obj, в контексте которого выполнялся код.

В современном javascript для этого используется with:

Пример:
Выделить все
eval(code, obj) // старый вариант

with(obj) {
    eval(code) // современный вариант
}


isFinite

Синтаксис

isFinite(number)

Аргументы

number
число/NaN/INFINITY

Описание, примеры

Возвращает false, если аргумент является NaN, положительной или отрицательной бесконечностью. Иначе возвращает true.


isNaN

Синтаксис

isNaN(testValue)

Аргументы

testValue
значение на проверку

Описание, примеры

Метод isNaN пытается преобразовать переданный параметр в число. Если параметр не может быть преобразован, возвращает true, иначе возвращает false.

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

Значение x == NaN и x === NaN всегда false для любого x, даже если x=NaN.

1 == NaN // false
NaN == NaN // false
isNaN(NaN) // true
isNaN("12") // false


parseFloat

Синтаксис

parseFloat(strVal)

Аргументы

strVal
строка, представляющая числовое значение

Описание, примеры

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

Допустимы начальные и конечные пробелы.

Если аргумент не может быть преобразован в число - возвращает NaN

Пример: все вызовы вернут 3.14
Выделить все
parseFloat("3.14");
parseFloat("314e-2");
parseFloat("0.0314E+2");

var x = "3.14";
parseFloat(x);

parseFloat("3.14more non-digit characters");
Пример: возврат NaN
parseFloat("тест") // NaN

Для более строгого преобразовния строки в число используйте оператор "+". Он возвращает NaN, если строка в точности не является числом.

Выделить все
str = "3.14"
+str == parseFloat(str)

+"3.14abc" // NaN, но
parseFloat("3.14abc") // = 3.14


parseInt

Синтаксис

var intValue = parseInt(string[, radix])

Аргументы

string
строковое представление числа
radix
основание системы счисления

Описание, примеры

Функция parseInt преобразует первый аргумент в число по указанному основанию, а если это невозможно - возвращает NaN.

Например, radix=10 даст десятичное число, 16 - шестнадцатиричное и т.п. Для radix>10 цифры после девяти представлены буквами латинского алфавита.

Если в процессе преобразования parseInt обнаруживает цифру, которая не является цифрой в системе счисления с основанием radix, например G вв 16-ричной системе или А в десятичной, то процесс преобразования тут же завершается и возвращается значение, полученное из строки на данный момент.

parseInt округляет дробные числа, т.к останавливается на десятичной точке.

Если radix не указан или равен 0, то javascript предполагает следующее:

  • Если входная строка начинается с "0х", то radix = 16
  • Если входная строка начинается с "0", то radix = 8. Этот пункт зависит от реализации и в некоторых браузерах (Google Chrome) отсутствует.
  • В любом другом случае radix=10

Если преобразовать в число не удается, parseInt возвращает
NaN

Чтобыпредставить число в виде строки нужной системы счисления, используйте intValue.toString(основание).

Пример: все вызовы вернут 15
Выделить все
parseInt(" 0xF", 16)
parseInt(" F", 16)
parseInt("17", 8)
parseInt(021, 8)
parseInt("015", 10)
parseInt(15.99, 10)
parseInt("FXX123", 16)
parseInt("1111", 2)
parseInt("15*3", 10)
parseInt("15e2", 10)
parseInt("15px", 10)
parseInt("12", 13)
Пример: все вызовы вернут NaN
parseInt("Hello", 8); // вообще не число
parseInt("546", 2);   // цифры не входят в 2-чную систему
Пример: все вызовы вернут -15
Выделить все
parseInt("-F", 16)
parseInt("-0F", 16)
parseInt("-0XF", 16)
parseInt(-10, 16)
parseInt(-15.1, 10
parseInt(" -17", 8)
parseInt(" -15", 10)
parseInt("-1111", 2)
parseInt("-15e1", 10)
parseInt("-12", 13)

Большинство реализаций интерпретируют строки, начинающиеся с 0 как восьмиричные. Поэтому следующие вызовы вернут восьмиричный результат:

parseInt("0e0"); // 0
parseInt("08"); // 0, т.к. '8' - не цифра в 8-ричной системе

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

parseInt("08", 10) // 10

Чтобы преобразовать строку, в точности являющуюся числом, используйте оператор "+":

var str = "123.6"
+str // 123.6 - не округляет

При любых ошибках преобразования оператор "+" возвращает NaN.

var str = "123bc"
+str // NaN
parseInt(str,10) // 123

See also

isNaN, parseFloat, Object.valueOf, Number.toString


prompt

Синтаксис

result = prompt(text[, value])

Аргументы

text
Текст сообщения
value
Строка, введенная в текстовое поле по умолчанию. Необязательный параметр.

Описание, примеры

Выводит сообщение в окне с текстовым полем и двумя кнопками: "ОК" и "ОТМЕНА".

Возвращает введенное значение или null, если посетитель нажал на кнопку "ОТМЕНА".

Как и в alert, окно - модальное, то есть посетитель не может делать ничего другого, пока не выберет одну из кнопок.

Пример:
var years=prompt('Сколько вам лет?',100)
alert('Вам '+years+' лет!')


setInterval

Синтаксис

intervalID = window.setInterval(func|code, delay)

Аргументы

func|code
Функция или строка кода для выполнения
delay
Интервал в миллисекундах, т.е 1000 это 1 секунда

Описание, примеры

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

В каком виде указывать первый параметр - разницы нет.
При указании строки кода - динамически создается функция func с телом code.

Следующие два вызова почти одинаковы:

Выделить все
setInterval('alert("прошла секунда")', 1000)

function sec() {
  alert("прошла секунда")
}
setInterval(sec, 1000)

Но более правильным считается объявление функции в явном виде, например так:

setInterval(function() { alert(...) }, 1000)

Вызов со строкой существует для совместимости с прежними версиями javascript.

this

Функция выполняется в другом контексте, со значением this = window, поэтому о передаче правильного this надо позаботиться отдельно.

Пример:
Выделить все
object = {
   func: function() { alert(this) }
}

setInterval( object.func , 1000) // this будет равно window

// правильный вариант с передачей this
setInterval( function() { object.func.call(object) } , 1000)

Отмена выполнения

Вы можете отменить выполнение setInterval при помощи clearInterval, используя для этого идентификатор intervalID.

Пример:
var intervalID = setInterval(...)
clearInterval(intervalID)


setTimeout

Синтаксис

timeout_id = window.setTimeout(func|code, delay)

Аргументы

func|code
Функция или строка кода для выполнения
delay
Задержка в миллисекундах, т.е 1000 это 1 секунда

Описание, примеры

В отличие от метода setInterval, setTimeout выполняет код только один раз.

В каком виде указывать первый параметр - разницы нет.
При указании строки кода - динамически создается функция func с телом code.

Следующие два вызова почти одинаковы:

Выделить все
setTimeout('alert("прошла секунда")', 1000)

function sec() {
  alert("прошла секунда")
}
setTimeout(sec, 1000)

Но более правильным считается объявление функции в явном виде, например так:

setTimeout(function() { alert(...) }, 1000)

Вызов со строкой существует для совместимости с прежними версиями javascript.

this

Функция выполняется в другом контексте, отличном от контекста, в котором задается setTimeout.

При этом значение this = window, поэтому о передаче правильного this надо позаботиться отдельно.

Пример: Без передачи this
object = {
   func: function() { alert(this) }
}

setTimeout( object.func , 1000) // this будет равно window
Пример: Передача this через call
object = {
   func: function() { alert(this) }
}

// правильный вариант с передачей this
setTimeout( function() { object.func.call(object) } , 1000)

Отмена выполнения

Вы можете отменить выполнение setTimeout при помощи clearTimeout, используя для этого идентификатор таймаута.

Пример:
var timeout_id = setTimeout(...)
clearTimeout(timeout_id)
Пример: Рабочий пример
<input type="button" onclick="on()" value="Запустить таймаут"/>
<input type="button" onclick="off()" value="Остановить отсчет"/>
<script>
function go() { alert('Я сработало') }

function on() {
    timeoutId = setTimeout(go, 3000)
}

function off() {
    clearTimeout(timeoutId)
}
</script>

См. также

  • this /Оператор/
  • Замыкания /Статья/
  • setInterval /Метод/


Справочник: Глобальные свойства

http://javascript.ru/manual/property

Глобальные свойства

Кратко | Подробно
  • arguments

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

  • Infinity

    Бесконечность

  • NaN

    Не-Числовое значение

  • undefined

    Обозначает неопределенное значение


arguments

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

Описание, примеры

Локальная переменная arguments доступна внутри функций.

Вы можете обращаться к аргументом по номеру, начиная от 0. При этом arguments содержит не объявленные, а реально переданные аргументы.

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

Пример:
Выделить все
function func(a,b) {
  alert(arguments[0])
  alert(arguments[1])
  alert(arguments[2])
}

func(1,2,3,4)

Кроме цифровых индексов, у arguments есть свойство length, такое же как у массива.

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

Пример: сумма аргументов
Выделить все
function sum() {
  var s = 0
  for(var i=0; i<arguments.length; i++) s += arguments[i]
  return s
}

Несмотря на доступ по индексу и наличие свойства length, arguments не является массивом, т.е не принадлежит типу Array.

Поэтому для arguments нельзя напрямую вызвать методы этого класса:

arguments.pop() // ошибка !

Можно, однако, вызвать методы Array через apply/call:

var args = Array.prototype.slice.call(arguments)

Ссылка на функцию arguments.callee

Кроме аргументов, arguments содержит ссылку на выполняющуюся функцию.

Ее можно использовать для задания и чтения статических свойств.
В следующем примере для этого используется статическое свойство called.

Пример: подсчет количества выполнений
Выделить все
function func() {
   arguments.callee.called++
}
func.called = 0;

func()
func()
alert(func.called) // 2


Infinity

Бесконечность

Описание, примеры

Изначальное значение Infinity равно Number.POSITIVE_INFINITY. Оно больше, чем любое число, включая само себя.

Математически, это значение ведет себя как бесконечность. Например, что угодно, помноженное на Infinity дает Infinity, и что угодно, деленное на Infinity дает 0.


NaN

Не-Числовое значение

Описание, примеры

Изначальное значение NaN - такое же, как Number.NaN.

Как правило, оно используется для обозначения ошибки при математических операциях. Вместо генерации исключения, функция возвращает NaN.

Значение NaN не равно никакому другому числу, включая само NaN.

Чтобы проверить переменную на NaN, используйте специальную функцию isNaN.

a = Math.sqrt(-1) // NaN
// но
a = 1/0   // Infinity

JavaScript prints the value Number.NaN as NaN.


undefined

Обозначает неопределенное значение

Описание, примеры

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

Например, функция без директивы return возвращает undefined.

Пример:
Выделить все
function a() {
   alert('test')
}

result = a() // result является undefined
alert(result === undefined) // true

Обращение к несуществующему свойству объекта также даст undefined.

Пример:
notexists = window.notexists
alert(result === undefined) // true

Как видно из примеров, определить, является ли значение undefined, можно строгим (тройным) знаком равенства.

Например, можно проверить, существует ли глобальная переменная:

if (window.somevar !== undefined) { .... }

Заметим, что нужен именно строгий оператор сравнения, т.к x==undefined верно также если x является null, а это уже другое значение.

Строгое сравнение является лучшей альтернативой использованию typeof:

var x
if (typeof x == 'undefined') {
   ...
}


Справочник: Синтаксические конструкции

http://javascript.ru/manual/syntax

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

Кратко | Подробно
  • break

    Завершает текущий цикл или конструкции switch и label и передает управление на следующий вызов

  • continue

    Прекращает текущую итерацию цикла и продолжает выполнение со следующей итерации

  • do..while

    Задает цикл с проверкой условия после каждой итерации

  • for

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

  • for..in

    Перебрать свойства объекта, для каждого свойства выполнить заданный код

  • function

    Объявить функцию

  • if

    Выполняет тот или иной блок кода в зависимости от того, верно ли условие

  • label

    Указать идентификатор для использования в break и continue

  • return

    Возвратить результат работы функции

  • switch

    Сравнивает значение выражения по различными вариантами и при совпадении выполняет соответствующий код

  • throw

    Инициировать("бросить") исключение

  • try..catch

    Ловить все исключения, выпадающие из блока кода

  • var

    Объявить переменную (или несколько) в текущей области видимости

  • while

    Задает цикл, который выполняется до тех пор, пока условие верно. Условие проверяется перед каждой итерацией.

  • with

    Добавить новую область видимости

  • Блок

    Группировка javascript-вызовов внутри фигурных скобок


break

Завершает текущий цикл или конструкции switch и label и передает управление на следующий вызов

Синтаксис

break [label]

Аргументы

label
Идентификатор метки, которой помечен прерываемый оператор/конструкция. Не обязательно для циклов и switch

Описание, примеры

Пример: простой пример
Выделить все
for(i=0; i<10; i++) {

    if (i==5) break;

}
alert(i) // 5

В языке javascript оператор break дает возможность прерывать выполнение сразу на несколько уровней. Для этого используется метка label:

Пример:
Выделить все
top:
for(i=0; i<10; i++) {
  for(j=0; j<15; j++) {
    if (i==5 && j==5) break top
  }
}
alert(j+i) // 10

Помеченным может быть не только цикл/switch, но и блок:

Выделить все
top:
{
  a=5
  break top
  a=10
}
alert(a) // 5

Единственное ограничение и отличие break от не существующего в javascript goto: вызов break должен находится внутри помеченного оператора, чтобы прервать его управление.

См. также

  • Выражения /Стандарт языка/


continue

Прекращает текущую итерацию цикла и продолжает выполнение со следующей итерации

Синтаксис

continue [label]

Аргументы

label
Необязательная метка для перехода к следующей итерации несколькими уровнями циклов выше

Описание, примеры

Пример:
Выделить все
for(i=0; i<10; i++) {
  if (i<5) continue;

  alert(i) // 5
  break;
}

В противоположность оператору break, continue не останавливает исполнение цикла.

Вместо этого:

  • для цикла while - передает управление на проверку условия цикла
  • для цикла for - передает управление на обновление условия

Оператор continue может содержать необязательную метку. Тогда управление будет передано на следующую итерации внешнего цикла с такой меткой.

Пример: переход на метку
Выделить все
top:
for(i=0; i<10; i++) {
  for(j=0; j<10; j++) {
    if (i==j) continue top
    ...
  }
}

В этом примере оператор continue при совпадающих i,j переведет управление сразу на следующую итерацию внешнего цикла по i.

Как и для оператора break, для перехода на метку вызов continue должен быть вложен в цикл с такой меткой.

См. также

  • Выражения /Стандарт языка/


do..while

Задает цикл с проверкой условия после каждой итерации

Синтаксис

do
   statement
while (condition)

Аргументы

statement
Блок или вызов javascript, который будет выполняться, пока верно условие condition
condition
Выражение будет вычислено каждый раз во время цикла. Если оно верно, statement будет выполнено еще раз, если нет - контроль пойдет на операторы после do..while

Описание, примеры

В следующем примере оператор do..while выполнится хотя бы один раз и продолжит выполняться, пока i<5.

Пример:
Выделить все
i = ...
do {
   i += 1;
   document.write(i)
} while (i < 5)

См. также

  • Выражения /Стандарт языка/


for

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

Синтаксис

for ([initial-expression]; [condition]; [final-expression])
   statement

Аргументы

initial-expression
Выражение (включая присваивание) или объявление переменной. Как правило, используется для инициализации переменной-счетчика. Это условие может объявлять новую переменную при помощи var. Такая переменная не является локальной переменной цикла, она видна во всей области видимости.
condition
Выражение, которое вычисляется между итерациями. Если оно является верным true, то выполняется следующая итерация, иначе - управление переходит дальше, вызовам после цикла.
final-expression
Выражение, которое вычисляется в конце каждой итерации, перед проверкой условия condition. Обычно используется для увеличения переменной-счетчика.
statement
Блок или javascript-вызов для выполнения при каждой итерации цикла, пока верно условие condition

Описание, примеры

В следующем примере в начальном условии объявляется переменная-счетчик i и увеличивается до 9 по 1 за каждую итерацию

Пример: со счетчиком
for (var i = 0; i < 9; i++) {
   n += i
}

Ни одно условие не является обязательным.

Пример: бесконечный цикл с выходом изнутри
for(;;) {
  ...
  if (какое-то условие) break;
}

См. также

  • Выражения /Стандарт языка/


for..in

Перебрать свойства объекта, для каждого свойства выполнить заданный код

Синтаксис

for (property in object)
  statement

Аргументы

property
Переменная, которой последовательно присваиваются названия свойств объекта. Может быть объявлена при помощи var, но не будет при этом локальной для цикла
object
Объект, свойства которого перебираются
statement
Блок или javascript-вызов для вызова на каждой итерации

Описание, примеры

Конструкция for..in - единственный в javascript способ перебрать все свойства объекта.

Пример:
Выделить все
var a = {
  p1: 1,
  p2: 2
}
for(var p in a) {
  alert(p) // p1, затем p2

  // к значению каждого свойства прибавить 1
  a[p] = a[p] + 1
}

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

Пример: встроенное свойство toString
Выделить все
// объявим объект
var a = {
  p1: 1
}

// у него есть свойство toString
alert(a.toString)

// унаследованное от Object.prototype
alert(a.toString === Object.prototype.toString) // true

for(p in a) {
  // в этом цикле свойства toString не будет
}

Порядок перечисления свойств не определен.

Поэтому, если во время итерации добавить свойство к объекту - цикл может по нему пройти позже или не пройти никогда, в зависимости от того, куда это новое свойство встанет во внутренней хэш-таблице интерпретатора javascript.

При удалении свойства во время итерации - если цикл по нему еще не прошел, то он не пройдет в дальнейшем.

Перебор свойств, кроме унаследованных

Для перебора всех свойств объекта, кроме унаследованных, используется конструкция for..in с дополнительной проверкой.

Выделить все
for(var prop in object) {
  // если свойство унаследовано - continue
  if (!object.hasOwnProperty(p)) continue

  // работа с prop
  ...
}

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

Пример: пербор без унаследованных свойств
Выделить все
Object.prototype.print = function() {
  document.write(this)
}
var a = {
  p1: 1,
  p2: 2
}
for(var p in a) {
  if (!a.hasOwnProperty(p)) continue
  alert(p)
}

См. также

  • Выражения /Стандарт языка/


function

Объявить функцию

Синтаксис

function name([param_1] [, param_2] [..., param_n]) {
   statements
}

Аргументы

name
Имя функции
param_1, param_2, ..., param_n
Названия параметров
statements
Тело функции

Описание, примеры

Существует два вида использования этой конструкции:

объявление функции
function func(a) { ... }
присвоение анонимной функции
var func = function(a) { ...}

Их отличие - в области видимости. Присвоенная анонимная функция видна с момента присвоения, а объявленная явно - везде:

Пример: видимость функций
Выделить все
// функции определены ниже

alert(decl) // функция видна, все ок

alert(anon) // функция еще не определена - ошибка

// сами функции
function decl(a) { }
var anon = function(a) { }

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

Значение возвращается оператором return. Функции без return или с return без значения возвращают undefined.

В теле функции доступна специальная переменная arguments, которая содержит параметры и ссылку на объект, представляющий собой текущую функцию (в javascript функции - объекты класса Function):

Пример: arguments
Выделить все
// Вызов
func(5)

// Выведет
function func(a,b) {
  alert(arguments.length)  // 1
  alert(arguments[0])  // 5
  alert(arguments[1])  // undefined
  alert(arguments.callee) // ссылка на функцию func
}

См. также

  • Function /Объект/
  • function /Оператор/
  • Функции /Статья/
  • Определение функции /Стандарт языка/


if

Выполняет тот или иной блок кода в зависимости от того, верно ли условие

Синтаксис

if (condition)
   statement1
[else
   statement2]

Аргументы

condition
Выражение, являющееся условием для проверки
statement1
Блок или javascript-вызов, который выполняется, если условие верно
statement2
Блок или javascript-вызов, который выполняется, если условие ложно

Описание, примеры

В javascript также разрешена проверка else if:

Пример:
Выделить все
if (a=1) {
  ...
} else if (a=2) {
  ...
} else {
  ...
}

В качестве условия может быть любое выражение:

Пример: присваивание как условие
a = 5
if (b=a) {
  ...
}


label

Указать идентификатор для использования в break и continue

Синтаксис

label:
   statement

Аргументы

label
Любой идентификатор javascript, кроме зарезервированных слов
statement
Цикл, оператор switch или блок, который помечается

Описание, примеры

Указывает идентификатор для использования в break и continue

Для примеров использования смотрите информацию об операторах break и continue


return

Возвратить результат работы функции

Синтаксис

return [expression]

Аргументы

expression
Результат для возврата. Если отсутствует - возвращается undefined

Описание, примеры

Пример:
function square(x) {
   return x * x;
}

См. также

  • function /Синтаксическая конструкция/


switch

Сравнивает значение выражения по различными вариантами и при совпадении выполняет соответствующий код

Синтаксис

Выделить все
switch (expression) {
   case label1:
      statements1
      [break]
   case label2:
      statements2
      [break]
   ...
   case labelN:
      statementsN
      [break]
   default:
      statements_def
      [break]
}

Аргументы

expression
Выражение для сравнения
labelN
Значение, с которым сравнивать
statementsN
Ветка кода, на которую перейдет управление при совпадении expression с labelN
statements_def
Ветка кода, которая будет выполнена, если expression не совпадет ни с одним значением labelN

Описание, примеры

Конструкция switch служит для сравнения значения на равенство с различными вариантами.

При этом равенство подразумевается в смысле оператора "==", сравнивать с регулярным выражением или как-то еще switch не умеет.

Если совпадение найдено, то соответствующий код исполняется до оператора break, который прекращает выполнение switch и передает управление дальше.

Пример: обычное применение switch
Выделить все
var a = 2+2
switch (a) {
  case 3:
    alert('Маловато')
    break
  case 4:
    alert('В точку!')
    break
  case 5:
    alert('Перебор')
    break
  default:
    alert('Я таких значений не знаю')
}

Если оператор break отсутствует, то выполнение продолжается дальше.

Например, предыдущий пример без break:

Пример: switch без break
Выделить все
var a = 2+2
switch (a) {
  case 3:
    alert('Маловато')
  case 4:
    alert('В точку!')
  case 5:
    alert('Перебор')
  default:
    alert('Я таких значений не знаю')
}

При a=4 последовательно будут выполнены операторы:

Выделить все
alert('В точку!')

alert('Перебор')

alert('Я таких значений не знаю')

Несколько значений case можно группировать.

Пример: группировка case
Выделить все
var a = 2+2
switch (a) {
  case 4:
    alert('Верно!')
    break
  case 3:
  case 5:
    alert('Неверно!')
    break
  default:
    alert('Я таких значений не знаю')
}


throw

Инициировать("бросить") исключение

Синтаксис

throw expression

Аргументы

expression
Любое выражение. Результат вычисления expression будет брошен как исключение

Описание, примеры

Используйте throw для генерации исключения, аналогично Java/PHP и другим языкам.

В отличие от них, javascript позволяет бросать исключение любого формата:

Пример: исключения
Выделить все
throw "Ошибка!"
throw 12
throw true
throw {
  message: "Ошибка доступа",
  code: 403
}

Удобным соглашением является выбор для исключения объекта Error или его наследника.

Пример:
Выделить все
function toInt(value) {
  var intVal = +value
  if (isNaN(intVal)) {
    throw new Error("Неправильный формат данных: "+value)
  }
}
Пример: используем toInt
Выделить все
try {
  var i = "something"
  i = toInt(i)
} catch(e) {
  alert(e.message)
}

Запустить пример


try..catch

Ловить все исключения, выпадающие из блока кода

Синтаксис

Выделить все
try {
   try_statements
}
[catch (exception_var) {
   catch_statements
}]
[finally {
   finally_statements
}]

Аргументы

try_statements
Код для выполнения и контроля над генерируемыми им исключениями
catch_statements
Все исключения будут попадать в блок catch_statements
exception_var
Переменная, которой присваивается пойманное исключение
finally_statements
Блок finally будет выполнен после окончания работы try/catch, вне зависимости от того, было ли исключение

Описание, примеры

Конструкция try..catch в javascript представлена в своей полной форме, включая необязательную ветку finally.

Допускается использование всех трех форм:

  1. try...catch
  2. try...finally
  3. try...catch...finally

В любом случае сначала выполняется код блока try. Затем, если было исключение - оно перехватывается и выполняется код из catch. Затем, вне зависимости от работы try/catch, перед выходом из конструкции выполняется блок finally.

Пример: tryEval
Выделить все
function tryEval(code) {
  try{
    eval(code)
  } catch(e) {
    alert(e.name)
  } finally {
    alert("finished")
  }
}

Запустим функцию tryEval с некорректным кодом.

При этом eval бросит исключение класса SyntaxError, что приведет к переходу управления в catch.

По окончанию catch выполнится finally.

Пример: некорректный код
function tryEval(code) {
  try{
    eval(code)
  } catch(e) {
    alert(e.name)
  } finally {
    alert("готово")
  }
}

tryEval("Некорректный код")

Если код - правильный, то блок catch будет проигнорирован, но по окончании try - в любом случае запустится finally:

Пример: верный код
tryEval("var a=5")

Как правило, в finally ставят логирующий и очищающий состояние процессов код.

Вложенные try..catch

Зачастую в catch нужно ловить не все подряд, а определенные исключения.

В javascript это реализуется через проверку, например, при помощи instanceOf:

Выделить все
try {
 ...
} catch(e) {
  if (!e instanceof MyError) {
    // если не мое - бросаем дальше
    throw e
  }
  .. обработать исключение ..
}

Пример с tryEval с отловом ошибок будет выглядить следующим образом.

Пример: отлов только синтаксических ошибок
function tryEval(code) {
  try{
    eval(code)
  } catch(e) {
    if (!(e instanceof SyntaxError)) throw e
    alert(e.name)
  } finally {
    alert("готово")
  }
}

try {
    tryEval("throw new RangeError('исключение в корректном коде')")
} catch(e) {
    alert("Выпало "+e.name)
}
  1. При запуске код внутри eval генерирует ошибку RangeError.
  2. Блок try..catch внутри функции tryEval ее ловит, но так как она не принадлежит классу SyntaxError - бросает дальше
  3. Исключение выпадает из tryEval и ловится общим блоком в конце примера

Если исключение не поймано нигде - последний шанс его обработки до генерации javascript-ошибки: событие window.onerror:

Пример: window.onerror
window.onerror = function() {
  alert("OOPS!")
}
throw "something"


var

Объявить переменную (или несколько) в текущей области видимости

Синтаксис

var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];

Аргументы

varnameN
Имя для переменной
valueN
Начальное значение переменной, любое выражение

Описание, примеры

Область видимости переменной - текущая функция, или глобальная, если переменная объявлена вне функций.

В javascript блок не задает область видимости.

Переменная внешней функции видна во внутренней, благодаря наличию замыканий.

Пример:
var num_hits = 0, cust_no = 0
var t

См. также

  • Замыкания /Статья/
  • Блок /Синтаксическая конструкция/


while

Задает цикл, который выполняется до тех пор, пока условие верно. Условие проверяется перед каждой итерацией.

Синтаксис

while (condition)
  statement

Аргументы

condition
Условие цикла
statement
Блок или javascript-вызов для выполнения во время итераций

Описание, примеры

Следующий цикл будет повторяться до тех пор, пока n меньше трех.

Пример:
n = 0
x = 0
while (n < 3) {
  n ++
  x += n
  alert("n="+n+", x="+x)
}

При каждой итерации цикл увеличивает n и прибавляет к x. Переменные x и n последовательно принимают значения:

  1. n = 1, x = 1
  2. n = 2, x = 3
  3. n = 3, x = 6

После окончания третьего прохода, условие n < 3 более не верно, поэтому цикл завершается.


with

Добавить новую область видимости

Синтаксис

with (object)
  statement

Аргументы

object
Добавить указанный объект в цепочку областей видимости. Может быть любое выражение, скобки вокруг обязательны.
statement
Блок или javascript-вызов для выполнения внутри дополненной области видимости

Описание, примеры

В следующем примере вычисления выполняются с областью видимости, расширенной объектом Math.

Пример:
Выделить все
var a, x, y;
var r = 10;
with (Math) {
  a = PI * r * r;
  x = r * cos(PI);
  y = r * sin(PI / 2);
}

Более частый пример:

Пример:
with(element.style) {
    position = 'relative'
    top = left = '5px'
}

При поиске переменной внутри with, интерпретатор сначала проверяет свойства object. Если свойства с таким именем нет - он идет дальше вверх по областям видимости.

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

По этим причинам использовать with не рекомендуется.

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

Пример: переменная вместо with
s = element.style
s.position = 'relative'
s.top = s.left = '5px'

См. также

  • Конструкции языка. Обработка ошибок. /Статья/
  • Сжатие Javascript и CSS /Статья/


Блок

Группировка javascript-вызовов внутри фигурных скобок

Синтаксис

Выделить все
{
   statement_1
   statement_2
   ...
   statement_n
}

Аргументы

statement_1, statement_2, ..., statement_n
Вызовы внутри блока

Описание, примеры

Как правило, используется в управляющих операторах (for, while и т.п.).

Пример:
while (x < 10) {
   x++
}

Блок не задает область видимости

Это важная особенность языка javascript, по сравнению с C, Java и многими другими языками.

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

Изменение переменной внутри блока также видно за его пределами.

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

Пример:
Выделить все
var x = 1;
{
   var x = 2;
}
alert(x); // выведет 2

Пример выводит 2, так как вызов var x внутри блока использует переменную x, объявленную до блока.

В C или Java этот пример вывел бы 1.


Справочник: Операторы

http://javascript.ru/manual/operator

Операторы

Кратко | Подробно
  • delete
  • function
  • in
  • instanceof
  • new
  • this
  • typeof
  • void
  • Аксессоры

    object.property и object["property"]

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

    +, -, *, /, %, ++, --

  • Запятая

    ,

  • Логические операторы

    &&, ||, !

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

    =, +=, -=, *=, /=, >>=, <<=, >>>=, &=, |=, ^=

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

    ==, !=, ===, !==, >, >=, <, <=

  • Побитовые операторы

    &, |, ^, ~, <<, >>, >>>

  • Строковые операторы

    +, +=

  • Условный оператор

    condition ? ifTrue : ifFalse


delete

Синтаксис

delete expression

Аргументы

expression
выражение, приводимое к ссылке на удаляемый объект

Описание, примеры

Удаляет объект, свойство объекта или элемент массива по указанному индексу.

Значением expression должна являтся ссылка на удаляемое свойство, например:

delete variableName
delete objectExpression.property
delete objectExpression["property"]
delete array[index]

Если expression не приводится к свойству, оператор delete не делает ничего.

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

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

Некоторые свойства объектов не могут быть удалены. В спецификации такие свойства обозначены флагом DontDelete.

Можно удалить переменные, объявленные глобально без var, но нельзя - объявленные через var.

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

Пример:
Выделить все
x = 42;        // создать свойство глобального объекта window
var y = 43;    // объявить как переменную
myobj = new Number()
myobj.h = 4    // создать свойство h
myobj.k = 5    // создать свойство k

delete x       // возвратит true (объявлено без var)
delete y       // возвратит false (объявлено с var, флаг DontDelete)
delete Math.PI // возвратит false (встроенный объект, флаг DontDelete)
delete myobj.h // возвратит true (пользовательское свойство)
with(myobj) {
  delete k;    // возвратит true (эквивалент delete myobj.k)
}
delete myobj   // возвратит true (аналог delete x)

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

Пример:
Выделить все
function Foo(){}
 Foo.prototype.bar = 42;
 var foo = new Foo();
 delete foo.bar;           // ничего не сделает
 alert(foo.bar);           // введет 42, свойство унаследовано
 delete Foo.prototype.bar; // удалит из прототипа
 alert(foo.bar);           // выведет "undefined", свойства больше нет

При удалении элементов массива, его длина не меняется. Даже если вы удалите последний элемент: delete a[a.length-1] - его длина останется той же.

При этом элемент исчезнет из массива:

Выделить все
arr = ["a", "b", "c"]
delete arr[1] // удалили b

alert(arr.length) // 3
alert(arr[1]) // undefined

alert(1 in arr) // false

Если вы хотите, чтобы элемент остался в массиве, но стал undefined - просто приравняйте его к undefined:

arr[1] = undefined
alert(1 in arr) // true

См. также

  • Выражения /Стандарт языка/


function

Синтаксис

function [name]([param1, param2, ..., paramN]) {
   statements
}

Аргументы

name
Имя функции. Может быть опущено, при этом создаваемая функция будет "анонимной"
paramN
Название аргумента, передаваемого функции. Функция может иметь до 255 аргументов
statements
Тело функции

Описание, примеры

Определение функции при помощи оператора function очень похоже и имеет почти такое же синтаксис, как и определение при помощи синтаксической конструкции.

Следующий пример определяет безымянную функцию и присваивает ссылку на нее переменной x. Функция возвращает квадрат аргумента.

Пример:
var x = function(y) {
   return y * y;
}

Пример ниже задает массив из трех функций:

Пример:
Выделить все
var a = [
   function(y) {
      return y
   }
   ,
   function(y) {
   {
      return y * y
   }
   ,
   function (y) {
      return y * y * y
   }
]

Для этого массива:

a[0](5) = 5
a[1](5) = 25
a[2](5) = 125

See also

См. также

  • Function /Объект/
  • function /Синтаксическая конструкция/
  • Функции /Статья/
  • Определение функции /Стандарт языка/


in

Синтаксис

prop in object

Аргументы

prop
Строка или числовое выражение, являющееся именем свойства или индексом массива
object
Объект для поиска в нем свойства или массив - для проверки индекса

Описание, примеры

Оператор in возвращает true, только если данное свойство присутствует в объекте или его прототипе.

Пример: объект
Выделить все
obj = {
  a: 5
}

"a" in obj // true
"b" in obj // false
"toString" in obj // true, т.к toString есть в прототипе

Следующий пример иллюстрирует проверку индекса в массиве:

Пример: массив
Выделить все
arr = [ "a", "b", "c"]

1 in arr // true
22 in arr // false

delete arr[1]
1 in arr // false : элемент удален

Справа от оператора in должен находится объект, иначе интерпретатор сгенерирует ошибку TypeError.

Пример:
'a' in "test" // TypeError

См. также

  • delete /Оператор/
  • Выражения /Стандарт языка/


instanceof

Синтаксис

var isInstance = object instanceof ObjectType

Аргументы

object
Объект
ObjectType
Конструктор(тип) для сравнения

Описание, примеры

Оператор instanceof используется для проверки, принадлежит ли объект данному типу. Например, при поимке исключения нужно обработать только исключение определенного типа.

В левой части оператора instanceof указывается проверяемый объект, а с правой - функция-конструктор для проверки.

Пример:
Выделить все
var theDay = new Date(2009, 11, 17);
if (theDay instanceof Date) {
  alert("Объект класса Date")
  // ...
}

Оператор instanceof учитывает наследование.

Следующий пример демонстрирует, что объекты String и Date принадлежат типу Object.

Пример: проверка унаследованных объектов
Выделить все
var myString = new String()
var myDate = new Date()

myString instanceof String  // true
myString instanceof Objec // true
myString instanceof Date   // false

myDate instanceof Date     // true
myDate instanceof Object   // true
myDate instanceof String   // false

То же верно и для типов, объявленных пользователем.

Например, в следующем примере объект типа Honda также принадлежит Car и Object.

Пример:
Выделить все
function Car(model) {
  this.model = model
}
function Honda(model) {
  this.model = model
  this.isHonda = true
}
Honda.prototype = new Car()

honda = new Honda("Accord")

honda instanceof Honda // true
honda instanceof Car // true
honda instanceof Object // true

honda instanceof Date // false

См. также

  • Выражения /Стандарт языка/


new

Синтаксис

objectName = new objectType(param1 [,param2] ...[,paramN])

Аргументы

objectName
Name of the new object instance.

objectType
Тип объекта. Должен быть функцией, которая станет конструктором
param1...paramN
Аргументы для функции-конструктора

Описание, примеры

Оператор new создает новый объект, используя функцию-конструктор, которая может быть как встроенной в javascript (Date, String), так и определенной пользователем.

Создание пользовательского объекта требует двух шагов:

  1. Объявить функцию-конструктор
  2. Инстанциировать (сделать экземпляр объекта) вызовом new

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

Оператор new также задает прототип объекта равным свойству prototype функции-конструктора. Подробнее - читайте про наследование в javascript.

См. также

  • Объекты, ООП /Статья/
  • Выражения /Стандарт языка/
  • Определение функции /Стандарт языка/


this

Описание, примеры

Оператор this возвращает ссылку на объект, являющийся текущим контекстом вызова. Это позволяет обращаться к свойствам "текущего" объекта: this.property.

Текущий объект не является жесткой фиксированным и зависит от контекста вызова функции. Он является, своего рода, скрытым параметром.

Есть четыре различных варианта его передачи.

Тип | Способ | this
неявно, через вызов метода | object.method(...) | object
явно, через call | function.call(object,...) | object
явно, через apply | function.apply(object,...) | object
неявно, через вызов new | new constructor(...) | новый, создаваемый объект

Если ни один из этих способов не задействован, то this указывает на глобальный объект: в браузере это window.

Это происходит при вызове функции без объекта: myFunc(params).

При манипуляциях с DOM при помощи javascript, this обычно используется для работы с событиями. При этом значение this указывает на текущий DOM-элемент, в контексте которого вызван обработчик.

Привязка методов

Так как this не привязано жестко к объекту, то можно привязывать один и тот же метод к любым классам.

Пример:
Выделить все
walk = function() { this.isWalking = true }

function Bird() { /*...*/ }
function Rabbit() { /*...*/ }

Bird.prototype.walk = Rabbit.prototype.walk = walk

new Bird().walk() // в обоих случаях
new Rabbit().walk() // this будет указывать на текущий объект

См. также

  • Ключевое слово "this" в деталях /Статья/
  • Введение в события /Статья/
  • Выражения /Стандарт языка/


typeof

Описание, примеры

Оператор typeof используется в двух формах:

  1. typeof operand
  2. typeof (operand)

Он возвращает тип операнда в виде строки.

Тип | Результат
Undefined | "undefined"
Null | "object"
Boolean | "boolean"
Number | "number"
String | "string"
Function | "function"
Любой другой объект | "object"

Часто возникают вопросы - почему и зачем таблица именно такая? Ответ простой: потому что так получилось по ходу развития javascript.

В современном javascript оператор typeof практически не используется. Например, вместо проверки:

if (typeof(var) == "undefined") { ... }

можно писать:

if (window.var !== undefined) { ... }

или, зачастую, подойдет и просто:

if (window.var) { ... }

Использовать if(var) нельзя, так как доступ к неопределенной переменной вызовет ошибку. Ну а обращение к отсутствующему свойству глобального объекта window всего лишь вернет undefined

См. также

  • Выражения /Стандарт языка/


void

Описание, примеры

Оператор void вычисляет выражение и возвращает undefined.

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

Иногда вызов void(0) используют для получения undefined. В этом случае можно вместо void(0) использовать просто undefined.

При использовании протокола "javascript:(URI)", браузер выполняет код URI и заменяет содержимое документ на возвращенное значение, если оно не undefined.

Поэтому javascript-вызовы заворачивают в void. Особенно часто это делают в букмарклетах.

Пример:
<a href="javascript:void(document.body.style.backgroundColor='green');">
  Нажмите и фон станет зеленым
</a>

Кстати, использование протокола javascript: не рекомендуется, так как в современном javascript обычно есть лучшие альтернативы, например события.

См. также

  • Букмарклеты и правила их написания /Статья/
  • Почему <a href="javascript:..."> - плохо /Статья/
  • Выражения /Стандарт языка/


Аксессоры

Описание, примеры

Операторы-аксессоры предоставляют доступ к свойствам объекта.

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

Есть два способа доступа к свойствам: запись с точкой или с квадратными скобками.

Запись с точкой

Пример: запись с точкой
get = object.property // получить свойство property
object.property = set  // записать свойство property

Для записи с точкой название свойства должно быть правильным javascript-идентификатором, то есть последовательностью английских букв и цифр, включая подчеркивание "_" и знак доллара "$", которая не начинается с числа.
Например, object.$1 - корректный идентификатор, а object.1 - нет.

Пример:
document.createElement('pre')

В этом примере из объекта document получено свойство createElement, которое является ссылкой на функцию. Эта функция вызвана с аргументом 'pre' в контексте объекта document.

Запись с квадратными скобками

Пример: квадратные скобки
get = object[property_name] // получить
object[property_name] = set  // записать

Здесь property_name - строка. Она не обязательна является правильным идентификатором. Может быть любое значене, включая цифры и даже " " (пробел).

Пример:
document['createElement']('pre')

Этот пример делает в точности то же самое, что и аналогичный предыдущий.

Использование eval

В старых javascript-скриптах иногда используется доступ к свойствам объекта через eval, в то время как гораздо быстрее и правильнее использовать запись с квадратными скобками.

Например, часто попадается такая запись:

Пример: устаревшая запись
x = eval('document.form_name.' + strFormControl + '.value')

Следует максимально избегать вызова eval. Лучше использовать скобочную запись:

Пример: скобочная запись
x = document.form_name[strFormControl].value

См. также

  • Выражения /Стандарт языка/


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

Описание, примеры

Арифметические операторы принимают численные значения и возвращают число.

Стандартные операторы - это прибавление (+), вычитание (-), умножение (*) и деление (/). Они работают как обычно, причем все операции осуществляются с плавающей точкой.

Пример:
1 / 2   // = 0.5 в javascript
1 / 2   // = 0 в Java, так как вычисление идет в целых числах

Особенность заключается в наличии в javascript бесконечности Infinity, которая может участвовать в вычислениях.

Пример: бесконечность
2.0 / 0    // = Infinity
2.0 / 0.0  // = Infinity
2.0 / -0.0 // = -Infinity

% (Модуль числа)

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

Пример:
7 % 2  // = 1
-1 % 2 // -1

++ (Инкремент)

Увеличивает переменную, к которой применен, на единицу.

Если использован в постфиксной форме x++, то возвращает исходное значение x, в префиксной форме ++x возвращает увеличенное значение.

Пример:
Выделить все
x=3
y = x++ // увеличивает x до 4, устанавливает y=3

x=3
y = ++x // увеличивает x до 4, устанавливает y=4

-- (Декремент)

Аналогично инкременту, но уменьшает на единицу.

- (Унарный минус)

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

+ (Унарный плюс)

Возвращает операнд.

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

Пример:
var value = input.value
value = +value
if (isNaN(value)) alert('не число')


Запятая

Описание, примеры

Оператор "запятая" вычисляет оба операнда и возвращает значение второго

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

Допустим, в arr хранится двумерный массив (матрица) по 10 элементов с каждой стороны. Следующий код использует оператор запятая для того, чтобы увеличить две переменных сразу. Он печатает значения диагональных элементов:

Пример:
for (var i=0, j=9; i <= 9; i++, j--) {
  document.writeln("a["+i+"]["+j+"]= " + a[i][j])
}

См. также

  • Выражения /Стандарт языка/


Логические операторы

Описание, примеры

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

Однако, в javascript операторы && и || возвращают не булево значение, а один из операндов, определивший значение выражения. Конечно, результат в таком случае может быть и не булевым.

Логические операторы описаны следующей таблицей:

Оператор | Использование | Описание
Логическое И (&&) | expr1 && expr2 | Возвращает expr1, если оно может быть преобразовано к false; в ином случае возвращает expr2. Так что, при вызове с булевыми значениями, && вернет true только если оба операнда истинны, иначе false.
Логическое ИЛИ (||) | expr1 || expr2 | Возвращает expr1, если оно может быть преобразовано к true; в ином случае возвращает expr2. Так что, при вызове с булевыми значении, || вернет true только хотя бы один операнд истинен, иначе вернет false.
Логическое НЕ (!) | !expr | Возаращает false, если операнд может быть преобразован к true, в ином случае возвращает true.

К false преобразуются, например: null, 0, пустая строка ("") и undefined.

Хотя операторы && и || и могут быть использованы для возвращения небулевых значений, они все же логические, так как возвращаемые значения могут быть приведены к булевому типу.

Оператор ! также используется для быстрого преобразования выражения к булевому значению:

Пример:
!!"string" = true
!!null = false

Сокращенные вычисления

Так как логические выражения вычисляются слева направо, они проверяются на возможность "сокращенных вычислений" по следующим правилам:

  • false && что угодно становится false.
  • true || что угодно становится true.

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

Пример:
a =1
check = 5 || (a=3)

alert(a) // 1

См. также

  • Выражения /Стандарт языка/


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

Описание, примеры

Базовый оператор присваивание - это обычное приравнивание =, которое дает левому операнду значение правого операнда.

Остальные операторы являются сокращениями следующих форм.

Сокращенный оператор | Значение
x += y | x = x + y
x -= y | x = x - y
x *= y | x = x * y
x /= y | x = x / y
x %= y | x = x % y
x <<= y | x = x << y
x >>= y | x = x >> y
x >>>= y | x = x >>> y
x &= y | x = x & y
x ^= y | x = x ^ y
x |= y | x = x | y

См. также

  • Выражения /Стандарт языка/


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

Описание, примеры

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

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

  • Две строки строго равны, если состоят из одинаковой последовательности символов
  • Два числа строго равны, если равны в обычном смысле слова. +0 строго равен -0.
  • NaN строго не равно ничему, включая NaN
  • Два булевых операнда строго равны, если они оба true или false
  • Два операнда-объекта строго равны, если являются ссылками на один и тот же общий объект
  • Null и Undefined равны ==, но не строго равны ===

Следующая таблица описывает операторы сравнения:

Оператор Описание Примеры, возвращающие true при var1=3, var2=4
Равно (==) Если два операнда не одного типа, javascript преобразовывает типы и сравнивает строго. Если какой-либо операнд - число или булево значение, то операнды преобразуются в числа; если какой-либо операнд строка - второй преобразуются в строку

3 == var1
"3" == var1
3 == '3'
Не равно (!=) Возвращает true, если операнды не равны. Если операнды имеют разный тип, javascript преобразовывает.

var1 != 4
var1 != "5"
Строго равно (===) Возвращает true, если операнды строго равны (см. выше), без преобразования типов.

3 === var1
Строго не равно (!==) Возвращает true, если операнды не являются строго равными (см. выше) или имеют разные типы.

var2 !== 3
3 !== '3'
Больше (>) Возвращает true, если левый операнд больше правого.

var2 > var1
Больше или равно (>=) Возвращает true, если левый операнд больше правого или равен ему.

var2 >= var1
var1 >= 3
Меньше (<) Возвращает true, если левый операнд меньше правого.

var1 < var2
Меньше или равно (<=) Возвращает true, если левый операнд меньше правого или равен ему.

var1 <= var2
var2 <= 5

Использование операторов сравнения

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

При конвертации типов яваскрипт преобразует String, Number, Boolean и Object следующим образом:

  • При сравнении числа и строки, строка преобразуется в числовое значение. Яваскрипт при этом получает значение числа из строкового литерала: "123" == 123.
  • Если один из операндов - булевый, то он преобразуется к 1, если он true и к +0, если он false
  • Если объект сравнивается с числом или строкой, яваскрипт пытается получить соответствующее значение для объекта. Он преобразует объект к элементарному значению, строке или числу, используя методы valueOf и toString. Если преобразовать объект не удается - генерируется ошибка выполнения.

См. также

  • Выражения /Стандарт языка/


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

Описание, примеры

Побитовые операторы интерпретируют операнды как последовательность из 32 битов (нулей и единиц). Они производят операции, используя двоичное представление числа и возвращают новую последовательность из 32 бит (число) в качестве результата.

В следующей таблице перечислены все побитовые операторы.
Далее двоичное представление числа и операторы разобраны более подробно.

Оператор | Использование | Описание
Побитовое И (AND) | a & b | Ставит 1 на каждого бита результата, для которого соответствующие биты операндов равны 1.
Побитовое ИЛИ (OR) | a | b | Ставит 1 для каждого бита результата, для которого хотя бы один из соответствующих битов операндов равен 1.
Побитовое исключающее ИЛИ (XOR) | a ^ b | Ставит 1 для каждого бита результата, для которого только один(но не оба) из соответствующих битов операндов равен 1.
Побитовое НЕ (NOT) | ~ a | Заменяет каждый бит операнда на противоположный.
Левый сдвиг | a << b | Сдвигает двоичное представление a на b битов влева, добавляя справа нули.
Правый сдвиг, переносящий знак | a >> b | Сдвигает двоичное представление a на b битов вправо, отбрасывая сдвигаемые биты.
Правый сдвиг с заполнением нулями | a >>> b | Сдвигает двоичное представление a на b битов вправо, отбрасывая сдвигаемые биты и добавляя нули слева.

Формат 32-битного целого числа со знаком

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

"Старший бит слева" - означает, что самый значимый бит (битовая позиция с самым большим значением) находится на крайнем левом месте.

"Дополнение до двойки" означает, что двоичный вид числа, обратного данному (например, 5 и -5) получается путем обращения(двоичного НЕ) всех битов с добавлением 1.

Например, вот число 314:

00000000000000000000000100111010

Чтобы получить -314, первый шаг - обратить биты числа:

11111111111111111111111011000101

Второй шаг - прибавить единицу:

11111111111111111111111011000110

Принцип дополнения до двойки делит все двоичные представления на два множества: если крайний-левый бит равен 0 - число положительное, если 1 - число отрицательное. Поэтому этот бит называется знаковым битом.

Побитовые операции

Бинарные побитовые операторы работают следующим образом:

  • Операнды преобразуются в 32-битные целые числа, представленные последовательностью битов (нулей и единиц)
  • Каждый бит в первом операнде рассматривается вместе с соответствующим битом второго операнда: первый бит с первым, второй со вторым и т.п.
  • Оператор применяется к каждой паре бит, давая соответствующий бит результата.

& (побитовое И)

Выполняет операцию И над каждой парой бит. a И b равно единице только когда оба бита равны единице.

Таблица истинности для И:

a | b | a И b
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
Пример:
Выделить все
9 (по осн. 10)
  = 00000000000000000000000000001001 (по осн. 2)
14 (по осн. 10)
  = 00000000000000000000000000001110 (по осн. 2)
                   --------------------------------
14 & 9 (по осн. 10)
  = 00000000000000000000000000001000 (по осн. 2)
  = 8 (по осн. 10)

| (Побитовое ИЛИ)

Выполняет операцию ИЛИ над каждой парой бит. a ИЛИ b равно 1, если хотя бы один бит из a,b равен 1.

Таблица истинности для ИЛИ:

a | b | a ИЛИ b
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
Пример:
Выделить все
9 (по осн. 10)
  = 00000000000000000000000000001001 (по осн. 2)
14 (по осн. 10)
  = 00000000000000000000000000001110 (по осн. 2)
                   --------------------------------
14 | 9 (по осн. 10)
  = 00000000000000000000000000001111 (по осн. 2)
  = 15 (по осн. 10)

^ (Исключающее ИЛИ)

Выполняет операцию исключающего ИЛИ над каждой парой бит.
a Исключающее ИЛИ b равно 1, если только a=1 или только b=1, но не оба одновременно a=b=1.

Таблица истинности для исключающего ИЛИ:

a | b | a Исключающее ИЛИ b
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
Пример:
Выделить все
9 (по осн. 10)
  = 00000000000000000000000000001001 (по осн. 2)
14 (по осн. 10)
  = 00000000000000000000000000001110 (по осн. 2)
                   --------------------------------
14 ^ 9 (по осн. 10)
  = 00000000000000000000000000000111 (по осн. 2)
  = 7 (по осн. 10)

~ (Побитовое НЕ)

Производит операцию НЕ над каждым битом, заменяя его на обратный ему.

Таблица истинности для НЕ:

a | НЕ a
0 | 1
1 | 0
Пример:
Выделить все
9 (по осн. 10)
  = 00000000000000000000000000001001 (по осн. 2)
               --------------------------------
~9 (по осн. 10)
  = 11111111111111111111111111110110 (по осн. 2)
  = -10 (по осн. 10)

Операторы битового сдвига

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

Направление сдвига - то же, что и направление стрелок в операторе.

<< (Левый сдвиг)

Этот оператор сдвигает первый операнд на указанное число битов влево. Лишние биты отбрасываются, справа добавляются нулевые биты.

Например, 9 << 2 даст 36:

Пример:
Выделить все
9 (по осн.10)
  = 00000000000000000000000000001001 (по осн.2)
                  --------------------------------
9 << 2 (по осн.10)
  = 00000000000000000000000000100100 (по осн.2)
  = 36 (по осн.10)

>> (Правый сдвиг, переносящий знак)

Этот оператор сдвигает биты вправо, отбрасывая лишние. Копии крайнего-левого бита добавляются слева. Так как итоговый крайний-левый бит имеет то же значение, что и исходный, знак числа (представленный крайним-левым битом) не изменяется.

Поэтому он назван "переносящим знак".

Например, 9 >> 2 даст 2:

Пример:
Выделить все
9 (по осн.10)
  = 00000000000000000000000000001001 (по осн.2)
                  --------------------------------
9 >> 2 (по осн.10)
  = 00000000000000000000000000000010 (по осн.2)
  = 2 (по осн.10)

Аналогично, -9 >> 2 даст -3, так как знак сохранен:

Пример:
Выделить все
-9 (по осн.10)
  = 11111111111111111111111111110111 (по осн.2)
                   --------------------------------
-9 >> 2 (по осн.10)
  = 11111111111111111111111111111101 (по осн.2) = -3 (по осн.10)

>>> (Правый сдвиг с заполнением нулями)

Этот оператор сдвигает биты первого операнда вправо. Лишние биты справа отбрасываются. Слева добавляются нулевые биты.

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

Для отрицательных чисел - результат работы разный. Например, -9 >>> 2 даст 1073741821, отличное от -9 >> 2 (дает -3):

Пример:
Выделить все
-9 (по осн.10)
  = 11111111111111111111111111110111 (по осн.2)
                    --------------------------------
-9 >>> 2 (по осн.10)
  = 00111111111111111111111111111101 (по осн.2)
  = 1073741821 (по осн.10)

См. также

  • Выражения /Стандарт языка/


Строковые операторы

Описание, примеры

Оператор +, примененный к операндам, один из которых строка, является оператором конкатенации (сложения) строк.

Пример:
"my" + "string" == "mystring"
"a" + 1 = "a1"
1 + "a" = "1a"

Оператор += является сокращенным вариантом записи:

s += a // то же что и
str = str + a

См. также

  • Выражения /Стандарт языка/


Условный оператор

Синтаксис

value = condition ? expr1 : expr2

Аргументы

condition
Условие
expr1
Выражение, вычисляемое, если условие condition истинно
expr1
Выражение, вычисляемое, если условие condition ложно

Описание, примеры

Условный оператор - единственный оператор яваскрипт, который принимает три операнда.

Он часто используется как более короткий вариант оператора if.

Если условие condition верно, то он возвращает значение выражения expr1, иначе - значение expr2.

Пример:
var price = isMember ? 100 : 200

См. также

  • Выражения /Стандарт языка/


LN10

Натуральный логарифм 10, приблизительно 2.302.


Справочник: Глобальные методы

Глобальные методы

Кратко | Подробно
  • alert

    Выводит модальное окно с сообщением

  • clearInterval

    Останавливает выполнение кода, заданное setInterval

  • clearTimeout

    Отменяет выполнение кода, заданное setTimeout

  • confirm

    Выводит сообщение в окне с двумя кнопками: "ОК" и "ОТМЕНА" и возвращает выбор посетителя

  • decodeURI

    Раскодирует URI, закодированный при помощи encodeURI

  • decodeURIComponent

    Раскодирует URI, закодированный при помощи encodeURIComponent

  • encodeURI

    Кодирует URI, заменяя каждое вхождение определенных символов на escape-последовательности, представляющие символ в кодировке UTF-8.

  • encodeURIComponent

    Кодирует компоненту URI, заменяя определенные символы на соответствующие UTF-8 escape-последовательности

  • eval

    Выполняет строку javascript-кода без привязки к конкретному объекту.

  • isFinite

    возвращает, является ли аргумент конечным числом

  • isNaN

    Проверяет, является ли аргумент NaN

  • parseFloat

    преобразует строковой аргумент в число с плавающей точкой

  • parseInt

    преобразует строковой аргумент в целое число нужной системы счисления

  • prompt

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

  • setInterval

    Выполняет код или функцию через указанный интервал времени

  • setTimeout

    Выполняет код или функцию после указанной задержки


Справочник: Объекты

Объекты

Кратко | Подробно

Стандартные объекты

  • Array

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

  • Boolean

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

  • Date

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

  • Error

    объект для представления ошибок

  • EvalError

    Ошибка при выполнении функции eval

  • Function

    Каждая функция в яваскрипт является объектом класса Function.

  • Math

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

  • Number

    Объект для работы с числами

  • Object

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

  • RangeError

    Ошибка, когда число не лежит в нужном диапазоне

  • ReferenceError

    Ошибку при ссылке на несуществующую переменную

  • RegExp

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

  • String

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

  • SyntaxError

    Ошибка при интерпретации синтаксически неверного кода

  • TypeError

    Ошибка в типе значения

  • URIError

    Ошибка при некорректном URI

Объекты браузера

  • window

    Два в одном: глобальный объект и окно браузера


Справочник: Операторы

Операторы

Кратко | Подробно
  • delete
  • function
  • in
  • instanceof
  • new
  • this
  • typeof
  • void
  • Аксессоры

    object.property и object["property"]

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

    +, -, *, /, %, ++, --

  • Запятая

    ,

  • Логические операторы

    &&, ||, !

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

    =, +=, -=, *=, /=, >>=, <<=, >>>=, &=, |=, ^=

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

    ==, !=, ===, !==, >, >=, <, <=

  • Побитовые операторы

    &, |, ^, ~, <<, >>, >>>

  • Строковые операторы

    +, +=

  • Условный оператор

    condition ? ifTrue : ifFalse


Справочник: Глобальные свойства

Глобальные свойства

Кратко | Подробно
  • arguments

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

  • Infinity

    Бесконечность

  • NaN

    Не-Числовое значение

  • undefined

    Обозначает неопределенное значение


Справочник: Синтаксические конструкции

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

Кратко | Подробно
  • break

    Завершает текущий цикл или конструкции switch и label и передает управление на следующий вызов

  • continue

    Прекращает текущую итерацию цикла и продолжает выполнение со следующей итерации

  • do..while

    Задает цикл с проверкой условия после каждой итерации

  • for

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

  • for..in

    Перебрать свойства объекта, для каждого свойства выполнить заданный код

  • function

    Объявить функцию

  • if

    Выполняет тот или иной блок кода в зависимости от того, верно ли условие

  • label

    Указать идентификатор для использования в break и continue

  • return

    Возвратить результат работы функции

  • switch

    Сравнивает значение выражения по различными вариантами и при совпадении выполняет соответствующий код

  • throw

    Инициировать("бросить") исключение

  • try..catch

    Ловить все исключения, выпадающие из блока кода

  • var

    Объявить переменную (или несколько) в текущей области видимости

  • while

    Задает цикл, который выполняется до тех пор, пока условие верно. Условие проверяется перед каждой итерацией.

  • with

    Добавить новую область видимости

  • Блок

    Группировка javascript-вызовов внутри фигурных скобок