Логические операции обычно используются с Boolean (логическими) значениями; если они имеются, они возвращают Boolean/Булево значение. Однако операции && и в действительности возвращают значение одного из специфицированных операндов, поэтому, если эти операции используются с не-Boolean значениями, они могут вернуть не-Boolean значение.
Реализованы в
JavaScript 1.0
Версия ECMA
ECMA-262
Логические операции описаны в следующей таблице.
Таблица 5.5 Логические Операции
Операция
Использование
Описание
&&
expr1 && expr2
(Логическое И) Возвращает expr1, если может быть конвертировано в false; иначе, возвращает expr2. Таким образом, при использовании с Boolean-значениями && возвращает true, если оба операнда true; иначе возвращает false.
expr1 expr2
(Логическое ИЛИ) Возвращает expr1, если может быть конвертировано в true; иначе, возвращает expr2. Таким образом, при использовании с Boolean-значениями возвращает true, если любой из операндов true; если оба false, возвращает false.
!
!expr
(Логическое НЕ) Возвращает false, если его единственный операнд может быть конвертирован в true; иначе возвращает true.
Примерами выражений, которые могут быть конвертированы в false, являются выражения, дающие при их вычислении null, 0, пустую строку ("") или undefined.
Хотя операции&& и можно использовать с не-Boolean-значениями, их можно продолжать рассматривать как Boolean-операции, поскольку их return-значения всегда могут быть конвертированы в Boolean-значения.
Сокращённый Цикл Вычисления.
Поскольку логические выражения вычисляются слева направо, они тестируются на возможность "укороченного/short-circuit" вычисления по следующим правилам:
false && что-либо сокращённо вычисляется в false.
true что-либо сокращённо вычисляется в true.
Логические правила гарантируют, что эти вычисления всегда корректны. Обратите внимание, что часть что-либо не вычисляется, поэтому выполнение этого что-либо в качестве побочного эффекта никакого эффекта иметь не будет.
Обратная Совместимость
JavaScript 1.0 и 1.1.
Операции && и ведут себя так:
Операция
Поведение
&&
Если первый операнд (expr1) может быть конвертирован в false, операция && возвращает false вместо значения expr1.
Если первый операнд (expr1) может быть конвертирован в true, операция возвращает true вместо значения expr1.
Примеры
Вот примеры применения операции && (логическое И):
a1=true && true // t && t возвращает true
a2=true && false // t && f
возвращает false
a3=false && true // f && t
возвращает false
a4=false && (3 == 4) // f && f
возвращает false
a5="Cat" && "Dog" // t && t
возвращает Dog
a6=false && "Cat" // f && t
возвращает false
a7="Cat" && false // t && f
возвращает false
А вот примеры применения операции (логическое ИЛИ):
o1=true true // t t
возвращает true
o2=false true // f t
возвращает true
o3=true false // t f
возвращает true
o4=false (3 == 4) // f f
возвращает false
o5="Cat" "Dog" // t t
возвращает Cat
o6=false "Cat" // f t
возвращает Cat
o7="Cat" false // t f
возвращает Cat
Примеры применения операции ! (логическое НЕ):
n1=!true // !t
возвращает false
n2=!false // !f
возвращает true
n3=!"Cat" // !t
возвращает false
Match
Используется для поиска совпадений регулярного выражения относительно строки.
Метод из
Реализован в
JavaScript 1.2
Версия ECMA
ECMA-262 Edition 3
Синтаксис
match(regexp)
Параметры
regexp
имя регулярного выражения. Может быть именем переменной или литералом.
Описание
Если регулярное выражение не содержит флаг g, возвращается тот же самый результат, который RegExp.exec мог бы возвратить для регулярного выражения и строки. Если регулярное выражение содержит флаг g, возвращается массив всех совпадений регулярного выражения в строке.
Примечание
Если поиск совпадения производится только для получения значения true или false, используйте или метод test регулярного выражения.
Примеры
Пример 1.
В этом примере match используется для нахождения 'Chapter' с последующими 1 или более цифровыми символами, с последующей десятичной точкой и цифровыми символами 0 или более раз. Регулярное выражение содержит флаг i, поэтому регистр игнорируется.
<SCRIPT>
str = "For more information, see Chapter 3.4.5.1";
re = /(chapter \d+(\.\d)*)/i;
found = str.match(re);
document.write(found);
</SCRIPT>
Это возвращает массив, содержащий Chapter 3.4.5.1,Chapter 3.4.5.1,.1
'Chapter 3.4.5.1' это первое совпадение и первое значение, запомненное из (Chapter \d+(\.\d)*).
'.1' это второе значение, значение, запомненное из (\.\d).
Пример 2.
Этот пример демонстрирует использование флагов глобализации и игнорирования регистра с match.
<SCRIPT>
str = "abcDdcba";
newArray = str.match(/d/gi);
document.write(newArray);
</SCRIPT>
Возвращённый массив содержит D, d.
prototype">
Math
Встроенный объект, содержащий методы и свойства математических констант и функций. Например, в объекте Math свойство имеет значение pi.
Объект ядра
Реализован в
JavaScript 1.0, NES 2.0
Версия ECMA
ECMA-262
Создание
Объект это предопределённый объект верхнего уровня в JavaScript. Вы можете автоматически получать доступ к нему без использования конструктора или вызова метода.
Описание
Все свойства и методы объекта Math являются статическими/static. Вы обращаетесь к константе PI как Math.PI и можете вызывать функцию синуса как Math.sin(x), где x это аргумент метода. Константы определены с полной точностью вещественных чисел в JavaScript.
Часто бывает удобно использовать оператор , когда раздел кода использует несколько констант и методов Math, тогда нет необходимости вводить "Math" каждый раз. Например,
with (Math) { a = PI * r*r y = r*sin(theta)
x = r*cos(theta) }
Свойства. Резюме.
Свойство
Описание
Константа Эйлера и база натуральных логарифмов, приблизительно 2.718.
Натуральный логарифм из 2, приблизительно 0.693.
Натуральный логарифм из 10, приблизительно 2.302.
С базой 2, логарифм E (приблизительно 1.442).
С базой 10, логарифм E (приблизительно 0.434).
Отношение окружности к диаметру, приблизительно 3.14159.
Квадратный корень из 1/2; приблизительно 0.707.
Квадратный корень из 2, приблизительно 1.414.
Методы. Резюме.
Метод
Описание
Возвращает абсолютное значение числа.
Возвращает арккосинус числа (в радианах).
Возвращает арксинус числа (в радианах).
Возвращает арктангенс числа (в радианах).
Возвращает арктангенс частного аргументов.
Возвращает наименьшее целое число, больше или равное данному числу.
Возвращает косинус числа.
Возвращает Enumber, где number это аргумент, а E константа Эйлера, база натуральных логарифмов.
Возвращает наибольшее целое, меньше или равное данному числу.
Возвращает натуральный логарифм (база E) числа.
Возвращает большее из двух чисел.
Возвращает меньшее из двух чисел.
Возвращает base степени exponent, то есть, baseexponent.
Возвращает псевдослучайное число в диапазоне от 0 до 1.
Возвращает значение числа, округлённого до ближайшего целого.
Синус числа.
Квадратный корень числа.
Тангенс числа.
Кроме того, этот объект наследует методы и из .
Max
Возвращает наибольшее из двух чисел.
Метод из
Static
Реализован в
JavaScript 1.0, NES 2.0
Версия ECMA
ECMA-262
Синтаксис
max(x,y)
Параметры
x, y
Числа.
Описание
Поскольку max это static-метод из Math, Вы всегда используете его так: Math.max(), а не как метод Math-объекта, созданного Вами.
Пример
Эта функция вычисляет переменные x и y:
function getMax(x,y) {
return Math.max(x,y)
}
Если Вы передаёте в getMax
значения 10 и 20, он возвращает 20; если передаёте значения -10 и -20, возвратит -10.
См. также
.
MAX_VALUE
Максимальное числовое значение, представимое в JavaScript.
Свойство из
Static, Read-only
Реализовано в
JavaScript 1.1, NES 2.0
Версия ECMA
ECMA-262
Описание
Свойство MAX_VALUE имеет значение приблизительно 1.79E+308. Значения, больше чем MAX_VALUE, представляются как "Infinity".
Поскольку MAX_VALUE это static-свойство в Number, Вы всегда используете его так: Number.MAX_VALUE, а не как свойство созданного Вами Number-объекта.
Примеры
Следующий код перемножает два числа. Если результат меньше или равен MAX_VALUE, вызывается функция func1; иначе, вызывается функция func2.
if (num1 * num2 <= Number.MAX_VALUE)
func1()
else
func2()
Min
Возвращает наименьшее из двух чисел.
Метод из
Static
Реализован в
JavaScript 1.0, NES 2.0
Версия ECMA
ECMA-262
Синтаксис
min(x,y)
Параметры
x, y
Числа.
Описание
Поскольку min это static-метод из Math, Вы всегда используете его так: Math.min(), а не как метод Math-объекта, созданного Вами.
Пример
Эта функция вычисляет переменные x и y:
function getMin(x,y) {
return Math.min(x,y)
}
Если Вы передаёте в getMin
значения 10 и 20, он возвратит 10; если передаёте значения -10 и -20, он возвратит -20.
См. также
.
PI">
MIN_VALUE
Наименьшее положительное числовое значение, представимое в JavaScript.
Свойство из
Static, Read-only
Реализовано в
JavaScript 1.1, NES 2.0
Версия ECMA
ECMA-262
Описание
Свойство MIN_VALUE
это ближайшее к 0 число, не отрицательное, которое JavaScript может представить.
MIN_VALUE имеет значение приблизительно 5e-324. Значения меньшие, чем MIN_VALUE ("underflow\подводные-значения"), конвертируются до 0.
Поскольку MIN_VALUE это static-свойство в Number, Вы всегда используете его так: Number.MIN_VALUE, а не как свойство созданного Вами Number-объекта.
Примеры
Этот код делит два числа. Если результат меньше или равен MIN_VALUE, вызывается функция func1; иначе, вызывается функция func2.
if (num1 / num2 >= Number.MIN_VALUE)
func1()
else
func2()
% (Modulus)
Модулус-операция используется так:
var1 % var2
Возвращает целочисленный остаток от деления первого операнда на второй, то есть, var1 modulo var2, в вышеуказанной операции , где var1 и var2 это переменные. Функция modulo даёт целочисленный остаток от деления var1 на var2. Например, 100 % 3 возвращает 1.
Multiline
Указывает, искать ли в строках по нескольким строкам текста.
Свойство из
Экземпляры .
Static
Реализовано в
JavaScript 1.2, NES 3.0
Версия ECMA
ECMA 262, Edition 3
Описание
multiline это свойство отдельного объекта регулярного выражения.
Значение multiline равно true, если был использован флаг "m"; иначе, false. Флаг "m" указывает, что многострочная строка ввода должна рассматриваться как несколько строк. Например, если используется "m", "^" и "$" изменяются с начала и конца целой строки на начало и конец любой строки внутри строки (ввода).
Вы не можете изменить это свойство явно.
NaN
Специальное значение Not-A-Number/Не-Число. Это значение представляется как литерал NaN без кавычек.
Свойство из
Read-only
Реализовано в
JavaScript 1.1, NES 2.0
Версия ECMA
ECMA-262
Описание
JavaScript печатает значение Number.NaN как NaN.
NaN
всегда не равно другому числу, включая само NaN; Вы не можете проверять значение not-a-number, сравнивая его с Number.NaN. Для этого используйте функцию .
Вы можете использовать свойство NaN для обозначения ошибочного условия в функции, которая должна вернуть верное число.
Примеры
Если month имеет значение больше 12, оно становится NaN, и выводится сообщение, показывающее верные значения.
var month = 13
if (month < 1 month > 12) {
month = Number.NaN
alert("Month must be between 1 and 12.")
}
См. также
, , , .
NEGATIVE_INFINITY
Специальное числовое значение - отрицательная бесконечность. Это значение представляется как литерал "-Infinity"
без кавычек.
Свойство из
Static, Read-only
Реализовано в
JavaScript 1.1, NES 2.0
Версия ECMA
ECMA-262
Описание
Это значение ведёт себя несколько иначе, чем математическая бесконечность:
Любое положительное значение, включая POSITIVE_INFINITY, умноженное на NEGATIVE_INFINITY, является NEGATIVE_INFINITY.
Любое отрицательное значение, включая NEGATIVE_INFINITY, умноженное на NEGATIVE_INFINITY, является POSITIVE_INFINITY.
Нуль, умноженный на NEGATIVE_INFINITY, является NaN.
NaN, умноженный на NEGATIVE_INFINITY, является NaN.
NEGATIVE_INFINITY, разделённое на отрицательное значение, за исключением NEGATIVE_INFINITY, является POSITIVE_INFINITY.
NEGATIVE_INFINITY, разделённое на положительное значение, за исключением POSITIVE_INFINITY, является NEGATIVE_INFINITY.
NEGATIVE_INFINITY, разделённое на NEGATIVE_INFINITY
или на POSITIVE_INFINITY, является NaN.
Любое число, разделённое на NEGATIVE_INFINITY, является Нулём.
Поскольку NEGATIVE_INFINITY это static-свойство в Number, Вы всегда используете его так: Number.NEGATIVE_INFINITY, а не как свойство созданного Вами Number-объекта.
Примеры
Здесь переменной smallNumber
присваивается значение, которое меньше минимального значения. Если выполняется оператор if, smallNumber имеет значение "-Infinity", поэтому вызывается функция func1.
var smallNumber = -Number.MAX_VALUE*10
if (smallNumber == Number.NEGATIVE_INFINITY)
func1()
else
func2()
См. также
,
.
Netscape
Объект верхнего уровня, используемый для доступа к любому Java-классу в пакете netscape.*.
Объект ядра
Реализован в
JavaScript 1.1, NES 2.0
Создание
Объект netscape это объект верхнего уровня, предопределённый объект JavaScript. Вы можете получить к нему доступ автоматически без использования конструктора или вызова метода.
Описание
Объект netscape это синоним свойства Packages.netscape.
Используйте свойство netscape для доступа к любому классу пакета netscape из кода JavaScript. Заметьте, что объект верхнего уровня netscape является синонимом Packages.netscape.
Примеры
См. примеры для
.
New
Операция new создаёт экземпляр определяемого пользователем типа объекта или встроенного типа объекта, имеющий конструктор функции.
Реализована в
JavaScript 1.0
Версия ECMA
ECMA-262
Синтаксис
objectName = new objectType (param1 [,param2] ...[,paramN])
Параметры
objectName
Имя нового экземпляра объекта.
objectType
Тип объекта. обязан быть функцией, определяющей тип объекта.
param1...paramN
Значения свойств объекта. эти свойства являются параметрами, определёнными для функции objectType.
Описание
Создание определяемого пользователем типа объектов проходит в два шага:
Определяется тип объекта путём написания функции.
Создаётся экземпляр объекта с помощью оператора new.
Чтобы определить тип объекта, создайте функцию для этого типа объекта, которая специфицирует его имя, свойства и методы. Объект может иметь свойство, которое само является объектом. См. далее примеры.
Вы всегда можете добавить свойство к ранее определённому объекту. Например, оператор car1.color = "black" добавляет свойство color в car1
и присваивает ему значение "black". Однако это не влияет на другие объекты. Чтобы добавить свойство ко всем объектам того же типа, Вы обязаны добавить свойство в определение типа объекта car.
Вы можете добавить свойство к ранее определённому объекту
путём использования свойства . Оно определяет свойство, которое используется совместно всеми объектами, созданными данной функцией, а не только отдельным экземпляром этого типа объекта. Следующий код добавляет свойство color всем объектам типа car, а затем присваивает значение свойству color объекта car1.
Дополнительно см. .
Car.prototype.color=null
car1.color="black"
birthday.description="The day you were born"
Примеры
Пример 1:
Тип объекта и экземпляр объекта. Предположим, Вы хотите создать тип объекта для автомобилей. Вы хотите назвать это тип car
и Вы хотите, чтобы он имел свойства make, model и year. Для выполнения этого Вы можете написать следующую функцию:
function car(make, model, year) {
this.make = make
this.model = model
this.year = year
}
Теперь Вы можете создать объект под названием mycar
таким образом:
mycar = new car("Eagle", "Talon TSi", 1993)
Этот оператор создаёт mycar
и присваивает его свойствам специфицированные значения. Теперь значением mycar.make
является строка "Eagle", а mycar.year - это целое число 1993, и так далее.
Вы можете создать любое количество объектов типа car через вызов new. Например:
kenscar = new car("Nissan", "300ZX", 1992)
Пример 2:
Свойство объекта, которое само является объектом. Предположим, Вы определяете объект под названием person:
function person(name, age, sex) {
this.name = name
this.age = age
this.sex = sex
}
и создаёте два экземпляра person-объектов:
rand = new person("Rand McNally", 33, "M")
ken = new person("Ken Jones", 39, "M")
затем Вы можете переписать определение типа car
для включения в него свойства owner, которое принимает person-объект:
function car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
}
Чтобы создать новые экземпляры объекта, Вы пишете:
car1 = new car("Eagle", "Talon TSi", 1993, rand);
car2 = new car("Nissan", "300ZX", 1992, ken)
Вместо передачи строкового литерала или целочисленного значения при создании новых объектов, предыдущие операторы передают объекты rand
и ken в качестве параметров для owners. Чтобы найти имя владельца машины car2, Вы можете получить доступ к свойству:
car2.owner.name
Новые Возможности Этой Версии
В JavaScript версии 1.5 имеются следующие новые возможности и улучшения:
Ошибки времени выполнения. Ошибки времени выполнения теперь сообщаются как исключения.
Улучшенное форматирование чисел. Включены методы Number.prototype.toExponential, Number.protoytpe.toFixed
и Number.prototype.toPrecision. См. ссылки , и .
Регулярные выражения:
"Жадные" квантификаторы +, *, ? и {} могут иметь после себя ? для форсирования их в не-жадные.
Неохватывающие скобки (?:x) могут использоваться вместо охватывающих скобок (x). Если используются неохватывающие скобки, совпадающие подвыражения не доступны как обратные ссылки/back-references.
Поддерживаются положительные и отрицательные утверждения. И те, и другие утверждают совпадение, в зависимости от того, что идёт после совпадающей строки. .
Флаг m добавлен для специфицирования того, что регулярное выражение должно совпадать с несколькими строками. .
Обявление условных функций. Функции могут теперь объявляться в if. .
Функции выражений. Функции могут теперь объявляться внутри выражения.
Несколько операторов catch. Поддерживается наличие нескольких catch
в операторе try...catch.
Константы. Поддерживаются именованные константы только-для-чтения. Эта возможность имеется только в C-реализации JavaScript.
Getter'ы и Setter'ы. JavaScript writer'ы могут теперь добавлять getter и setter методы к своим объектам. Эта возможность имеется только в C-реализации JavaScript. См. в Главе 7 в книге "Ядро JavaScript. Руководство по Использованию".
Number
Даёт возможность работать с числовыми значениями. Объект Number это оболочка/капсула объекта для примитивных числовых значений.
Объект ядра
Реализован в
JavaScript 1.1, NES 2.0
JavaScript 1.2: модифицировано поведение конструктора Number.
JavaScript 1.3: добавлен метод .
JavaScript 1.5, NES 6.0: добавлены методы ,
и .
Версия ECMA
ECMA-262
Создание
Конструктор Number:
new Number(value)
Параметр
value
Числовое значение создаваемого объекта.
Описание
Объект Number используется в основном:
Для доступа к его константным свойствам, которые представляют наибольшее и наименьшее представляемые числа, положительную и отрицательную бесконечность и значение Not-a-Number/Не-Число.
Для создания числовых объектов, в которые можно добавлять свойства. Вероятно Вам редко нужно будет создавать объект Number.
Свойства Number это свойства самого класса, а не отдельных объектов Number.
JavaScript 1.2:
Number(x) теперь даёт NaN, а не ошибку, если x это строка, не содержащая правильно сформированный числовой литерал.
Например,
x=Number("three");
document.write(x + "<BR>");
печатает NaN.
Вы можете конвертировать любой объект в число, используя функцию верхнего уровня .
Специальное значение, представляющее отрицательную бесконечность; возвращается при переполнении.
Специальное значение, представляющее бесконечность; возвращается при переполнении.
Позволяет добавлять свойства к Number-объекту.
Методы. Резюме.
Метод
Описание
toExponential
Возвращает строку, представляющую число в экспоненциальной нотации.
Возвращает строку, представляющую число в нотации с фиксированной точкой.
toPrecision
Возвращает строку, представляющую число специфицированной точности с фиксированной точкой.
Возвращает литерал объекта, представляющий специфицированный Number-объект; Вы можете использовать это значение для создания нового объекта. Переопределяет метод .
Возвращает строку, представляющую специфицированный объект. Переопределяет метод .
Возвращает примитивное значение специфицированного объекта. Переопределяет метод .
Кроме того, этот объект наследует методы и из .
Примеры
Пример 1.
Свойства объекта Number для присвоения значений различным числовым переменным:
biggestNum = Number.MAX_VALUE;
smallestNum = Number.MIN_VALUE;
infiniteNum = Number.POSITIVE_INFINITY;
negInfiniteNum = Number.NEGATIVE_INFINITY;
notANum = Number.NaN;
Пример 2.
Создаётся Number-объект , myNum, затем добавляется свойство description ко всем Number-объектам . Затем значение присваивается свойству description объекта myNum.
myNum = new Number(65);
Number.prototype.description=null;
myNum.description="wind speed";
Object
Object это примитивный тип объекта в JavaScript. Все объекты JavaScript являются потомками от Object. То есть, все JavaScript-объекты имеют методы, определённые в Object.
Объект ядра
Реализован в
JavaScript 1.0: метод toString.
JavaScript 1.1, NES 2.0: добавлены методы eval и valueOf; свойство constructor.
JavaScript 1.2: не рекомендуется использовать метод .
JavaScript 1.3: добавлен метод .
JavaScript 1.4: удалён метод .
Версия ECMA
ECMA-262
Создание
Object-конструктор:
new Object()
Параметры
Отсутствуют.
Свойства. Резюме.
Свойство
Описание
Специфицирует функцию, которая создаёт прототип объекта.
Позволяет добавлять свойства для всех объектов.
Метод. Резюме.
Метод
Описание
Не рекомендуется использовать. Вычисляет строку кода JavaScript в контексте специфицированного объекта.
Возвращает литерал объекта, представляющий специфицированный объект; Вы можете использовать это значение для создания нового объекта.
Возвращает примитивное значение специфицированного объекта.
Добавляет контрольную точку для свойства объекта.
Операции Присвоения
Операция присвоения присваивает левому операнду значение правого операнда.
Реализована в
JavaScript 1.0
Версия ECMA
ECMA-262
Базовая операция присвоения - знак равенства (=), который присваивает левому операнду значение правого операнда. То есть, x = y присваивает значение y значению x. Другие операции присвоения являются обычно сокращениями стандартных операций, как показано в таблице.
Таблица 5.2 Операции Присвоения
Сокращённая Операция
Значение
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
В нестандартных ситуациях операция присвоения не имеет идентичного значения из колонки Значение из . Если левый операнд операции присвоения сам содержит операцию присвоения, левый операнд вычисляется только однократно. Например:
a[i++] += 5 //i вычисляется только один раз
a[i++] = a[i++] + 5 //i вычисляется дважды
Операции Сравнения
Операция сравнения сравнивает свои операнды и возвращает логическое значение, базируясь на верности /true сравнения.
Реализована в
JavaScript 1.0
JavaScript 1.3: добавлены операции === и !==
JavaScript 1.4: == не рекомендуется для сравнения двух объектов JSObject. Используйте метод .
Версия ECMA
ECMA-262 содержит все операции сравнения, кроме === и !== Версия ECMA-262 Edition 3 добавляет === и !==
Операнды могут иметь числовое или строковое значение. Строки сравниваются на базе стандартного лексикографического упорядочивания с использованием значений Unicode.
Boolean-значение возвращается как результат сравнения:
Две строки равны, если они имеют одинаковые последовательности символов, один размер и одинаковые символы в соответствующих позициях.
Два числа равны, если они численно равны (имеют одно числовое значение). NaN не равно ничему, включая NaN. Положительные и отрицательные нули равны.
Два объекта равны, если они ссылаются на один и тот же Object.
Два Булевых операнда равны, если они оба true или false.
Типы Null и Undefined являются == (но не ===).
В следующей таблице даны операции сравнения.
Таблица5.3 Операции Сравнения
Операция
Описание
Примеры, возвращающие true
Равно (==)
Возвращает true, если операнды равны. Если два операнда имеют разные типы, JavaScript пытается конвертировать операнды к одному типу для сравнения.
3 == var1 "3" == var1 3 == '3'
Не равно (!=)
Возвращает true, если операнды не равны. Если два операнда имеют разные типы, JavaScript пытается конвертировать операнды к одному типу для сравнения.
var1 != 4 var1 != "3"
Строго равно (===)
Возвращает true, если операнды равны и одного типа.
3 === var1
Строго не равно (!==)
Возвращает true, если операнды не равны и/или разных типов.
var1 !== "3"
3 !== '3'
Больше чем (>)
Возвращает true, если левый операнд больше, чем правый операнд.
var2 > var1
Больше или равно (>=)
Возвращает true, если левый операнд больше чем или равен правому операнду.
var2 >= var1 var1 >= 3
Меньше чем (<)
Возвращает true, если левый операнд меньше, чем правый операнд.
var1 < var2
Меньше чем или равно (<=)
Возвращает true, если левый операнд меньше чем или равен правому операнду.
var1 <= var2 var2 <= 5
В этих примерах предполагается, что переменной var1
присваивается значение 3, а переменной var2 присваивается значение 4.
Использование Операций Равенства
Стандартные операции сравнения (== и !=) сравнивают два операнда, независимо от их типа.
Операции строгого равенства (=== и !==) выполняют сравнение равенства операндов одного типа. Используйте операции строгого равенства, если операнды обязаны быть специфического типа и значения или если важен точный тип операндов. Иначе, используйте стандартные операции равенства, которые позволяют проверить идентичность двух операндов, даже если они имеют разные типы.
Если нужна конверсия типа, JavaScript конвертирует операнды типов String, Number, Boolean
или Object таким образом:
При сравнении числа и строки, строка конвертируется в числовое значение. JavaScript пытается конвертировать строковой числовой литерал в значение типа Number. Сначала математическое значение получается из строкового числового литерала. Затем это значение округляется до ближайшего значения типа Number.
Если один из операндов имеет тип Boolean, он конвертируется в 1, если он true, и в +0, если он false.
Если объект сравнивается с несколькими строками, JavaScript пытается возвратить значение по умолчанию для этого объекта.
Операции пытаются конвертировать объект в примитивное значение, String
или Number, используя методы valueOf и toString объекта. Если эта попытка конвертации не удаётся, генерируется ошибка времени выполнения.
Вы не можете использовать стандартную операцию равенства (==) для сравнения экземпляров JSObject. Для таких сравнений используйте метод .
Обратная Совместимость
Поведение стандартных операций равенства (== и !=) зависит от версии JavaScript.
JavaScript 1.3 и более ранние.
Можно использовать стандартную операцию равенства (==) или для сравнения экземпляров JSObject.
JavaScript 1.2.
Стандартные операции равенства (== и !=) не выполняют конверсию типов перед выполнением сравнения. Операции строгого равенства (=== и !==) недоступны.
JavaScript 1.1 и более ранние.
Стандартные операции равенства (== и !=) выполняют конверсию типов до выполнения сравнения.
Операции строгого равенства (=== и !==) недоступны.
, (Операция "запятая")
Операция "запятая" вычисляет оба операнда и возвращает значение второго операнда.
Реализована в
JavaScript 1.0
Версия ECMA
ECMA-262
Синтаксис
expr1, expr2
Параметры
expr1, expr2
Любые выражения.
Описание
Вы можете использовать операцию "запятая", если хотите включить несколько выражений в том месте, где требуется одно выражение. Наиболее обычное использование этой операции - поддержка нескольких параметров в цикле .
Например, если a это 2-мерный массив с 10 элементами по измерению, то следующий код использует операцию "запятая" для инкремента двух переменных за один проход. Код печатает значения элементов по диагонали массива:
for (var i=0, j=9; i <= 9; i++, j--)
document.writeln("a["+i+","+j+"]= " + a[i,j])
Pakages
Объект верхнего уровня, используемый для доступа к Java-классам из кода JavaScript.
Объект ядра
Реализован в
JavaScript 1.1, NES 2.0
Создание
Объект Packages это объект верхнего уровня, предопределённый в JavaScript. Вы можете автоматически получать к нему доступ без использования конструктора или вызова метода.
Описание
Объект Packages даёт доступ к public-методам и полям произвольного Java-класса из JavaScript. Свойства java, netscape и sun представляют пакеты java.*, netscape.* и sun.*, соответственно. Используйте стандартную нотацию точкой Java для доступа к классам, методам и полям этих пакетов. Например, Вы можете иметь доступ к конструктору класса Frame:
var theFrame = new Packages.java.awt.Frame();
Для удобства, JavaScript предоставляет объекты верхнего уровня netscape, sun
и java, которые являются синонимами свойств Packages
с теми же именами. Соответственно, Вы может получить доступ к Java-классам этих пакетов без ключевого слова Packages:
var theFrame = new java.awt.Frame();
Свойство className представляет полное квалифицированное имя любого Java-класса, доступного в JavaScript. Вы обязаны использовать объект Packages для доступа к классам вне пакетов netscape, sun и java.
Свойства. Резюме.
Свойство
Описание
Полное квалифицированное имя Java-класса в пакетах, кроме пакетов netscape, java
или sun, доступного в JavaScript.
Любой класс в Java-пакете java.*
Любой класс в Java-пакете netscape.*
Любой класс в Java-пакете sun.*
Примеры
Эта JavaScript-функция создаёт диалоговый бокс
Java:
function createWindow() {
var theOwner = new Packages.java.awt.Frame();
var theWindow = new Packages.java.awt.Dialog(theOwner);
theWindow.setSize(350,200);
theWindow.setTitle("Hello, World");
theWindow.setVisible(true);
}
В это примере функция создаёт экземпляр theWindow
как новый Packages-объект. Методы setSize, setTitle и setVisible доступны в JavaScript как public-методы из java.awt.Dialog.
Parse
Возвращает количество миллисекунд, прошедшее с 1 января 1970 года, 00:00:00 местного времени.
Метод из
Static
Реализован в
JavaScript 1.0, NES 2.0
Версия ECMA
ECMA-262
Синтаксис
Date.parse(dateString)
Параметры
dateString
Строка, представляющая дату.
Описание
Метод parse принимает строку с датой (например, "Dec 25, 1995") и возвращает количество миллисекунд, прошедшее после 1 января 1970 год, 00:00:00 (местного времени). Эта функция используется для установки значений даты на базе строковых значений, например, в соединении с методом Date-объектом.
Для заданной строки, представляющей время, parse возвращает значение времени. Он принимает стандартный синтаксис времени IETF: "Mon, 25 Dec 1995 13:30:00 GMT". Он понимает континентальные сокращения часовых поясов США, но, для общего использования, употребляйте смещение часового пояса, например, "Mon, 25 Dec 1995 13:30:00 GMT+0430" (4 часа, 30 минут к западу от Greenwich-меридиана). Если Вы не специфицируете часовой пояс, принимается местное/локальное время. GMT и UTC рассматриваются как эквиваленты.
Поскольку parse это static-метод объекта Date, всегда используйте его как Date.parse(), а не как метод Date-объекта, созданного Вами.
Примеры
Если IPOdate является существующим Date-объектом, Вы можете установить его в 9 августа 1995 года так:
IPOdate.setTime(Date.parse("Aug 9, 1995"))
См. также
.
PI
Отношение длины окружности к её диаметру, приблизительно 3.14159.
Свойство из
Static, Read-only
Реализовано в
JavaScript 1.0, NES 2.0
Версия ECMA
ECMA-262
Примеры
Эта функция возвращает значение pi:
function getPi() {
return Math.PI
}
Описание
Поскольку PI это static-метод из Math, Вы всегда используете его так: Math.PI, а не как свойство Math-объекта, созданного Вами.
Побитовые Логические Операции
Реализованы в
JavaScript 1.0
Версия ECMA
ECMA-262
Концептуально логические побитовые операции работают так:
Операнды конвертируются до 32-битных целых и выражаются последовательностью битов (нулей и единиц).
Каждый бит первого операнда сравнивается с соответствующим битов второго операнда: первый бит с первым, второй со вторым, и так далее.
Операция применяется к каждой паре битов, и результат конструируется в битах.
Например, 1001 это двоичное представление десятеричной цифры 9, а 1111 - цифры 15.
Итак, если побитовые операции применить к этим значениям, результаты будут такими:
15 & 9 даст 9 (1111 & 1001 = 1001)
15 | 9 даст 15 (1111 | 1001 = 1111)
15 ^ 9 даст 6 (1111 ^ 1001 = 0110)
Побитовые Операции
Побитовые операции рассматривают свои операнды как наборы 32-битных значений (нулей и единиц), а не как десятеричные, 16-ричные или 8-ричные числа. Например, десятеричное число 9 имеет двоичное представление 1001. Побитовые операции выполняют свои операции с такими двоичными представлениями, но возвращают стандартные числовые значения JavaScript.
В таблице дано резюме по битовым операциям JavaScript:
Таблица 5.4 Побитовые Операции
Операция
Использование
Описание
Побитовое И
a & b
Возвращает 1 в каждой битовой позиции, в которой соответствующие биты обоих операндов равны 1.
Побитовое ИЛИ
a | b
Возвращает 1 в каждой битовой позиции, в которой соответствующий бит одного или обоих операндов равен 1.
Побитовое исключающее ИЛИ
a ^ b
Возвращает 1 в каждой битовой позиции, в которой соответствующий бит одного, но не обоих операндов, равен 1.
Побитовое НЕ
~ a
Инвертирует биты операндов.
Сдвиг влево
a << b
Сдвигает a в двоичном представлении на b битов влево, заполняя справа нулями.
Сдвиг вправо с сохранением знака
a >> b
Сдвигает a в двоичном представлении на b битов вправо, отбрасывая смещённые биты.
Сдвиг вправо с заполнением нулями
a >>> b
Сдвигает a в двоичном представлении на b битов вправо, отбрасывая смещённые биты и заполняя слева нулями.
Побитовые Операции Сдвига
Реализованы в
JavaScript 1.0
Версия ECMA
ECMA-262
Побитовые операции сдвига принимают два операнда: первый это сдвигаемое количество, а второй специфицирует количество битовых позиций, на которое сдвигается первый операнд. Направление операции сдвига управляется используемой операцией.
Операции сдвига конвертируют свои операнды до 32-битных чисел и возвращают результат того же типа, что и у левого операнда.
Pop
Удаляет последний элемент массива и возвращает этот элемент. Этот метод изменяет размер массива.
Метод из
Реализован в
JavaScript 1.2, NES 3.0
Версия ECMA
ECMA-262 Edition 3
Синтаксис
pop()
Параметры
Отсутствуют.
Пример
Следующий код создаёт массив myFish, содержащий 4 элемента, затем удаляет последний элемент.
Специальное значение, представляющее бесконечность. Представляется как литерал "Infinity" без кавычек.
Свойство из
Static, Read-only
Реализован в
JavaScript 1.1, NES 2.0
Версия ECMA
ECMA-262
Описание
Это значение ведёт себя несколько иначе, чем математическая Бесконечность:
Любое положительное значение, включая POSITIVE_INFINITY, умноженное на POSITIVE_INFINITY, является POSITIVE_INFINITY.
Любое отрицательное значение, включая NEGATIVE_INFINITY, умноженное на POSITIVE_INFINITY, является NEGATIVE_INFINITY.
Нуль, умноженный на POSITIVE_INFINITY, является NaN.
NaN, умноженное на POSITIVE_INFINITY, является NaN.
POSITIVE_INFINITY, разделённое на любое отрицательное значение, за исключением NEGATIVE_INFINITY, является NEGATIVE_INFINITY.
POSITIVE_INFINITY, разделённое на любое положительное значение, за исключением POSITIVE_INFINITY, является POSITIVE_INFINITY.
POSITIVE_INFINITY, делённое на NEGATIVE_INFINITY
или на POSITIVE_INFINITY, является NaN.
Любое число, делённое на POSITIVE_INFINITY, является Нулём.
Поскольку POSITIVE_INFINITY это static-свойство в Number, Вы всегда используете его так: Number.POSITIVE_INFINITY, а не как свойство созданного Вами Number-объекта.
Примеры
Переменной bigNumber
присваивается значение, которое больше максимального значения. Если выполняется оператор if, bigNumber имеет значение "Infinity", поэтому вызывается функция func1.
var bigNumber = Number.MAX_VALUE * 10
if (bigNumber == Number.POSITIVE_INFINITY)
func1()
else
func2()
См. также
,
.
Pow
Возвращает base для степени exponent, то есть, baseexponent.
Метод из
Static
Реализован в
JavaScript 1.0, NES 2.0
Версия ECMA
ECMA-262
Синтаксис
pow(x,y)
Параметры
base
Число базы.
exponent
Экспонента, на которую увеличивается base.
Описание
Поскольку pow это static-метод из Math, Вы всегда используете его так: Math.pow(), а не как метод Math-объекта, созданного Вами.
Примеры
function raisePower(x,y) {
return Math.pow(x,y)
}
Если x равен 7 и y равен 2, raisePower
возвратит 49 (7 в степени 2).
См. также
, .
JavaScript это разработанный Netscape межплатформенный
JavaScript это разработанный Netscape межплатформенный объектно-ориентированный язык скриптов (сценариев). Эта книга является справочником по ядру языка JavaScript.
Предисловие содержит следующие разделы:
A Зарезервированные Слова
В этом приложении перечислены зарезервированные слова JavaScript.
Зарезервированные слова из этого списка не могут использоваться в качестве имён переменных, функций, методов и объектов JavaScript. Некоторые из этих слов используются как ключевые слова JavaScript; другие зарезервированы на будущее.
abstract boolean break byte case catch char class const
continue debugger default delete do double
else enum export extends false final finally float for function
goto if implements import in
instanceof int interface long native new null package private protected
public return short static super
switch synchronized this throw throws transient true try typeof
Представляет прототип для данного класса. Вы можете использовать прототип для добавления свойств и методов во все экземпляры класса. О прототипах см. .
Свойство из
Реализовано в
JavaScript 1.1, NES 2.0
Версия ECMA
ECMA-262
Представляет прототип данного класса. Вы можете использовать этот прототип для добавления свойств или методов во все экземпляры класса. О прототипах см. .
Свойство из
Реализовано в
JavaScript 1.1, NES 2.0
Версия ECMA
ECMA-262
Значение, на основе которого создаются экземпляры определённого класса. Каждый объект, который может быть создан путём вызова функции constructor, имеет ассоциированное свойство prototype.
Свойство из
Реализован в
JavaScript 1.1, NES 2.0
Версия ECMA
ECMA-262
Описание
Вы можете добавлять новые свойства и методы в существующий класс, добавляя их к прототипу, ассоциированному с функцией constructor данного класса. Синтаксис добавления нового свойства или метода таков:
fun.prototype.name = value
где
fun
Имя объекта функции constructor, который Вы хотите изменить.
name
Имя создаваемого свойства или метода.
value
Начальное значение нового свойства или метода .
Если Вы добавляете свойство к прототипу объекта, все объекты, создаваемые функцией constructor этого объекта будут иметь это новое свойство, даже если объекты существовали до создания нового свойства. Например, предположим, мы имеем такие операторы:
var array1 = new Array();
var array2 = new Array(3);
Array.prototype.description=null;
array1.description="Contains some stuff"
array2.description="Contains other stuff"
После того как Вы установили свойство для прототипа, все последующие объекты, созданные с Array, будут иметь это свойство:
anotherArray=new Array()
anotherArray.description="Currently empty"
Пример
В этом примере создаётся метод str_rep и используется оператор String.prototype.rep = str_rep для добавления метода ко всем объектам . Все объекты, созданные с помощью new String(), будут иметь этот метод, даже объекты, созданные ранее. Затем создаётся другой метод и добавляется к одному из объектов через использование оператора s1.rep = fake_rep. Метод str_rep
остальных объектов не изменяется.
var s1 = new String("a")
var s2 = new String("b")
var s3 = new String("c")
// Создаётся метод repeat-string-N-times для всех String-объектов
Function str_rep(n) {
var s = "", t = this.toString()
while (--n >= 0) s += t
return s
}
String.prototype.rep = str_rep
s1a=s1.rep(3) //
возвращает "aaa"
s2a=s2.rep(5) //
возвращает "bbbbb"
s3a=s3.rep(2) // возвращает "cc"
// Создаёт другой метод и назначает его только одной переменной String
Function fake_rep(n) {
return "repeat " + this + " " + n + " times."
}
s1.rep = fake_rep
s1b=s1.rep(1) //
возвращает "repeat a 1 times."
s2b=s2.rep(4) //
возвращает "bbbb"
s3b=s3.rep(6) //
возвращает "cccccc"
Функция из этого примера работает также с объектами , не созданными с помощью конструктора Следующий код возвращает "zzz".
"z".rep(3)
toSource">
Представляет прототип для данного класса. вы можете использовать этот прототип для добавления свойств или методов всем экземплярам данного класса. о прототипах см. .
Свойство из
Реализован в
JavaScript 1.1, NES 2.0
Версия ECMA
ECMA-262
Представляет прототип для данного класса. Вы можете использовать этот прототип для добавления свойств или методов всем экземплярам класса. См. также .
Свойство из
Реализовано в
JavaScript 1.1
Версия ECMA
ECMA-262
Представляет прототип для данного класса. Вы можете использовать прототип для добавления свойств всем экземплярам класса. О прототипах см. .
Свойство из
Реализовано в
JavaScript 1.1, NES 2.0
Версия ECMA
ECMA-262
Представляет прототип для данного класса. Вы можете использовать prototype для добавления свойств и методов во все экземпляры класса. О прототипах см. .
Свойство из
Реализовано в
JavaScript 1.1, NES 3.0
Версия ECMA
ECMA-262
Push
Добавляет один или более элементов в конец массива и возвращает новый размер массива. Этот метод изменяет размер массива.
Метод из
Реализован в
JavaScript 1.2, NES 3.0
JavaScript 1.3: push
возвращает новый размер массива до того, как последний элемент будет добавлен к массиву.
Версия ECMA
ECMA-262 Edition 3
Синтаксис
push(element1, ..., elementN)
Параметр
element1, ...,
elementN
Элементы, добавляемые в конец массива.
Описание
Поведение метода push аналогично поведению функции push
из Perl 4. Обратите внимание, что оно отличается от поведения в Perl 5.
Обратная Совместимость
JavaScript 1.2.
Метод push
возвращает последний элемент, добавленный к массиву.
Пример
Следующий код создаёт массив myFish, содержащий два элемента, затем добавляет к нему ещё два элемента. После выполнения кода, pushed содержит 4. (В JavaScript 1.2 pushed
после выполнения кода содержит "lion".)
myFish = ["angel", "clown"];
pushed = myFish.push("drum", "lion");
См. также
, ,
Random
Возвращает псевдослучайное число в диапазоне от 0 до 1. Генератор случайных чисел работает от текущего времени, как в Java.
Метод из
Static
Реализован в
JavaScript 1.0, NES 2.0: только Unix.
JavaScript 1.1, NES 2.0: все платформы.
Версия ECMA
ECMA-262
Синтаксис
random()
Параметры
Отсутствуют.
Описание
Поскольку random это static-метод из Math, Вы всегда используете его так: Math.random(), а не как метод Math-объекта, созданного Вами.
Пример
//Возвращает случайное число в диапазоне от 0 до 1
function getRandom() {
return Math.random()
}
RegExp
Объект регулярного выражения, содержит патэрн регулярного выражения. Имеет свойства и методы для использования этого регулярного выражения для поиска и замены совпадений в строках.
В дополнение к свойствам отдельного объекта регулярного выражения, который Вы создаёте и использованием функции конструктора RegExp, предопределённый объект RegExp
имеет static-свойства, которые устанавливаются всегда, когда используется какое-либо регулярное выражение.
Объект ядра
Реализован в
JavaScript 1.2, NES 3.0
JavaScript 1.3: добавлен метод .
JavaScript 1.5, NES 6.0: добавлен флаг m, нежадный модификатор, незахватывающие скобки, "смотрящие вперёд"/lookahead-утверждения. ECMA 262, Edition 3.
Создание
Формат литерального текста или функция конструктора RegExp.
Литеральный формат используется так:
/pattern/flags
Функция конструктора используется так:
new RegExp("pattern"[, "flags"])
Параметры
pattern
Текст регулярного выражения.
flags
Флаг, если специфицирован, может иметь следующие значения в любом сочетании:
g: глобальная подстановка
i: игнорировать регистр
m: подставлять на нескольких строках
Заметьте, что параметры литерального формата не используют кавычек для обозначения строк, а параметры функции конструктора - используют кавычки. Итак, следующие выражения создают одно и то же регулярное выражение:
/ab+c/i
new RegExp("ab+c", "i")
Описание
При использовании функции конструктора необходимо применять нормальные правила замен-подстановок (escape) в строках (ввод специального символа с предшествующей \ при включении этого символа в строку). Например, следующие два выражения эквивалентны:
re = new RegExp("\\w+")
re = /\w+/
В таблице представлен полный список и описание специальных символов, которые могут использоваться в регулярных выражениях.
Таблица 1.1    Специальные символы в регулярных выражениях
Символ
Значение
\
Для символов, которые обычно рассматриваются литерально, указывает, что следующий символ является специальным символом и не интерпретируется литерально.
Например, /b/ совпадает с символом 'b'. Поместив обратную наклонную черту-backslash перед b, то есть /\b/, придаём символу специальное значение - "граница слова".
-или-
Для символов, которые обычно рассматриваются как специальные, указывает, что следующий символ является не специальным символом и должен интерпретироваться литерально.
Например, * это специальный символ, который означает 0 или более вхождений предшествующего символа; например, /a*/ означает совпадение с 0 или более a. Чтобы искать * литерально, поставьте перед ним backslash; например, /a\*/ совпадает с 'a*'.
^
Совпадение с начала ввода. Если многострочный флаг установлен в true, совпадает также сразу после символа обрыва строки.
Например, /^A/ не совпадает с 'A' в строке "an A", но совпадает с первой 'A' в строке "An A."
$
Совпадение в конце ввода. Если многострочный флаг установлен в true, совпадает также непосредственно перед символом обрыва строки.
Например, /t$/ не совпадает с 't' в "eater", но совпадает с ним в "eat".
TD>*
Совпадение с предыдущим символом 0 или более раз.
Например, /bo*/ совпадает с 'boooo' в "A ghost booooed" и с 'b' в "A bird warbled", но ничего не совпадает в "A goat grunted".
+
Совпадение с предыдущим символом 1 или более раз. Эквивалентно {1,}.
Например, /a+/ совпадает с 'a' в "candy" и со всеми 'a' в "caaaaaaandy".
?
Совпадение с предыдущим символом 0 или 1 раз.
Например, /e?le?/ совпадает с 'el' в "angel" и с 'le' в "angle."
если используется сразу после одного из квантификаторов *, +, ? или {}, делает квантификатор нежадным (совпадает минимальное число раз), что противоположно действию по умолчанию, когда квантификатор жадничает (совпадает максимальное число раз).
Также используется во вперёдсмотрящих утверждениях, которые описаны в (?=), (?!), и (?:) в этой таблице.
.
(Десятичная точка) совпадает с любым одиночным символом, исключая символ новой строки.
Например, /.n/ совпадает с 'an' и 'on' в "nay, an apple is on the tree", но не с 'nay'.
(x)
Совпадает с 'x' и запоминает совпадение. Это называется "захватывающие скобки".
Например, /(foo)/ совпадает с и запоминает 'foo' в "foo bar." Совпавшая подстрока может быть вызвана из элементов результирующего массива [1], ..., [n] или из предопределённых свойств $1, ..., $9 RegExp-объектов.
(?:x)
Совпадает с 'x', но не запоминает совпадение. Это называется "незахватывающие скобки". Совпавшая подстрока не может быть вызвана из элементов результирующего массива [1], ..., [n] или из предопределённых свойств $1, ..., $9 RegExp-объектов.
x(?=y)
Совпадает с 'x', только если после 'x' следует 'y'. Например, /Jack(?=Sprat)/ совпадает с 'Jack', только если следом идёт 'Sprat'. /Jack(?=Sprat|Frost)/ совпадает с 'Jack', только если следом идёт 'Sprat' или 'Frost'. Однако ни 'Sprat', ни 'Frost' не являются частью результатов совпадения.
x(?!y)
Совпадает с 'x', только если после 'x' не следует 'y'. Например, /\d+(?!\.)/ совпадает с числом, только если следом не идёт десятичная точка. /\d+(?!\.)/.exec("3.141") совпадает с 141, но не совпадает с 3.141.
x|y
Совпадает с 'x' или с 'y'.
Например, /green|red/ совпадает с 'green' в "green apple" и с 'red' в "red apple."
{n}
Где n это положительное целое. Совпадает точно с n появлений предшествующего элемента.
Например, /a{2}/ не совпадает с 'a' в "candy," но совпадает со всеми 'a' в "caandy" и с первыми двумя 'a' в "caaandy."
{n,}
Где n это положительное целое. Совпадает с не менее, чем n появлений предшествующего элемента.
Например, /a{2,}не совпадает с 'a' в "candy," но совпадает со всеми 'a' в "caandy" и в "caaaaaaandy."
{n,m}
Где n и m это положительные целые. Совпадает с минимум n и с максимум m появлений предшествующего элемента.
Например, /a{1,3}/ не совпадает ни с чем в "cndy", совпадает с 'a' в "candy," с первыми двумя 'a' в "caandy" и с первыми тремя 'a' в "caaaaaaandy". Обратите внимание, что при совпадении с "caaaaaaandy", совпадает "aaa", хотя оригинальная строка содержит больше 'a'.
[xyz]
Набор символов. Совпадение с одним из символов в скобках. Можно специфицировать диапазон символов с помощью дефиса.
Например, [abcd] это то же самое, что [a-c]. Совпадает с '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/ совпадает с control-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
Совпадает с form-feed/прогоном страницы.
\n
Совпадает с linefeed/прогоном строки.
\r
Совпадает с "возвратом каретки".
\s
Совпадает с одиночным пробельным символом, включая space, tab, form feed, line feed. Эквивалентно [ \f\n\r\t\u00A0\u2028\u2029].
Например, /\s\w*/ совпадает с ' bar' в "foo bar."
\S
Совпадает с одиночным символом, отличным от пробелов. Эквивалентно [^ \f\n\r\t\u00A0\u2028\u2029].
Например, /\S/\w* совпадает с 'foo' в "foo bar."
\t
Совпадает с tab.
\v
Совпадает с vertical tab.
\w
Совпадает с любым алфавитным или цифровым символом, включая underscore/символ подчёркивания. Эквивалентно [A-Za-z0-9_].
Например, /\w/ matches 'a' in "apple," '5' in "$5.28," and '3' in "3D."
\W
Совпадает с любым не-словом. Эквивалентно [^A-Za-z0-9_].
Например, /\W/ or /[^$A-Za-z0-9_]/ совпадает с '%' в "50%."
\n
Где n это положительное целое. обратная ссылка на последнее совпадение подстроки, где n заключённых в скобки в регулярном выражении (включая левую скобку).
Например, /apple(,)\sorange\1/ совпадает с 'apple, orange' в "apple, orange, cherry, peach." Более сложные примеры даны после этой таблицы.
\0
Совпадает с символом NUL. После него не ставьте другую цифру.
\xhh
Совпадает с символом с кодом hh (два 16-ричных числа).
\uhhhh
Совпадает с символом с кодом hhhh (четыре 16-ричных числа).
Литеральная нотация предоставляет компиляцию регулярного выражения при вычислении выражения. Используйте литеральную нотацию, если регулярное выражение должно остаться константой. Например, если Вы используете литеральную нотацию для построения регулярного выражения, используемого в цикле, регулярное выражение не должно перекомпилироваться при каждой итерации.
Конструктор объекта регулярного выражения, например, new RegExp("ab+c"), предоставляет компиляцию регулярного выражения на этапе прогона/runtime. Используйте функцию, если знаете, что патэрн регулярного выражения будет изменяться, или если Вы не знаете патэрн и получаете его из другого источника, такого как ввод от пользователя.
Отдельный предопределённый объект RegExp
доступен для каждого окна; то есть каждый отдельный поток выполнения JavaScript получает свой собственный объект RegExp. Поскольку каждый скрипт запускается в потоке без остановки до конца выполнения, это гарантирует, что разные скрипты не перепишут значения объекта RegExp.
Свойства. Резюме.
Обратите внимание, что некоторые свойства объекта RegExp
имеют и длинные, и короткие (Perl-подобные) имена. Оба имени всегда ссылаются на одно и то же значение. Perl это язык программирования, из которого JavaScript смоделировал свои регулярные выражения.
Нужно ли тестировать регулярное выражение относительно всех возможных совпадений в строке, или только относительно первого. В JavaScript 1.5 это свойство экземпляра объекта RegExp, а не объект RegExp.
Игнорировать ли регистр символов при выполнении совпадений в строке. В JavaScript 1.5 это свойство экземпляра объекта RegExp, а не объект RegExp.
Индекс, с которого начинать поиск совпадения в строке. В JavaScript 1.5 это свойство экземпляра объекта RegExp, а не объект RegExp.
Искать ли в строках, расположенных по нескольким строкам. В JavaScript 1.5 это свойство экземпляра объекта RegExp, а не объект RegExp.
Позволяет добавлять свойства всем объектам.
Текст патэрна. В JavaScript 1.5 это свойство экземпляра объекта RegExp, а не объект RegExp.
Метод. Резюме.
Метод
Описание
Выполняет поиск совпадений в своём параметре-строке.
Тестирует на совпадение в своём параметре-строке.
Возвращает литерал объекта, представляющий специфицированный объект; можно использовать это значение для создания нового объекта. Переопределяет метод .
Возвращает строку, представляющую специфицированный объект. Переопределяет метод .
Кроме того, этот объект наследует методы и из .
Примеры
Пример 1.
Этот скрипт использует метод replace
для переключения слов в строке. В замещающем тексте скрипт использует "$1" и "$2" для обозначения результатов совпадений с соответствующими скобками в патэрне регулярного выражения.
<SCRIPT>
re = /(\w+)\s(\w+)/;
str = "John Smith";
newstr=str.replace(re, "$2, $1");
document.write(newstr)
</SCRIPT>
На экране появится "Smith, John".
Пример 2.
В этом примере RegExp.input устанавливается событием Change. В функции getInfo
метод exec использует значение RegExp.input в качестве аргумента.
<HTML>
<SCRIPT>
function getInfo() {
re = /(\w+)\s(\d+)/;
var m = re.exec();
window.alert(m[] + ", your age is " + m[2]);
}
</SCRIPT>
Enter your first name and your age, and then press Enter.
Находит совпадение между регулярным выражением и строкой и заменяет совпавшую подстроку новой подстрокой.
Метод из
Реализован в
JavaScript 1.2
JavaScript 1.3: добавлена возможность специфицировать функцию в качестве второго параметра.
Версия ECMA
ECMA-262 Edition 3
Синтаксис
replace(regexp, newSubStr)
replace(regexp, function)
Версии до JavaScript 1.3:
replace(regexp, newSubStr)
Параметры
regexp
Имя регулярного выражения. Это может быть имя переменной или литерал.
newSubStr
Строка, размещаемая вместо строки, найденной с помощью regexp.
function
Функция, вызываемая после выполнения совпадения.
Описание
Этот метод не изменяет String-объект, в котором он вызывается. Он просто возвращает новую строку.
Если Вы хотите выполнить глобальный поиск и замену, включите в регулярное выражение флаг g.
Специфицирование строки в качестве параметра.
Замещающая строка может содержать следующие специальные патэрны замещения:
$$
Вставляет '$'.
$&
Вставляет совпавшую подстроку.
$`
Вставляет часть строки, предшествующую совпавшей подстроке.
$´
Вставляет часть строки, следующую после совпавшей подстроки.
$n или $nn
Где n или nn это десятеричные числа, вставляет подстроку n-ного совпадения в скобках.
Специфицирование функции в качестве параметра.
Если в качестве второго параметра Вы специфицируете функцию, эта функция вызывается после выполнения совпадения. (использование функции таким способом часто называется лямбда-выражение.)
В Вашей функции Вы можете динамически генерировать строку, которая замещает совпавшую подстроку. Результат вызова функции используется в качестве замещающего значения.
Вложенная функция может использовать совпавшие подстроки для определения новой строки (newSubStr), которая замещает найденную подстроку. Вы получаете совпавшие подстроки через параметры Вашей функции. Первый параметр Вашей функции содержит полную совпавшую подстроку. Следующие n параметров могут быть использованы для совпадений в скобках, запоминаемых строк подсовпадений, где n это количество строк подсовпадения в регулярном выражении. Наконец, последние два параметра это смещение в строке, где произошло совпадение, и сама строка.
Например, это метод replace возвращает XX.zzzz - XX , zzzz.
"XXzzzz".replace(/(X*)(z*)/,
function (str, p1, p2, offset, s) {
return str + " - " + p1 + " , " + p2;
}
)
Обратная Совместимость
JavaScript 1.2.
Вы не можете специфицировать функцию, которая вызывается после выполнения совпадения.
Примеры
Пример 1.
В этом примере регулярное выражение содержит флаги глобальный и игнорирования регистра, что позволяет методу replace заменить каждое появление 'apples' в строке на 'oranges.'
<SCRIPT>
re = /apples/gi;
str = "Apples are round, and apples are juicy.";
newstr=str.replace(re, "oranges");
document.write(newstr)
</SCRIPT>
Будет напечатано "oranges are round, and oranges are juicy."
Пример 2.
В этом примере регулярное выражение определено в replace и содержит флаг игнорирования регистра.
<SCRIPT>
str = "Twas the night before Xmas...";
newstr=str.replace(/xmas/i, "Christmas");
document.write(newstr)
</SCRIPT>
Будет напечатано "Twas the night before Christmas..."
Пример 3.
Этот скрипт переключает слова в строке. Для замещающего текста ,скрипт использует патэрны замещения $1 и $2.
<SCRIPT LANGUAGE="JavaScript1.2">
re = /(\w+)\s(\w+)/;
str = "John Smith";
newstr = str.replace(re, "$2, $1");
document.write(newstr)
</SCRIPT>
Будет напечатано "Smith, John".
Пример 4.
В этом примере градусы по Фаренгейту замещаются градусами по Цельсию. Градусы по Фаренгейту должны быть числом, заканчивающимся буквой F.
Функция возвращает градусы по Цельсию, оканчивающиеся буквой C. Например, если параметр ввода будет 212F, функция возвратит 100C. Если будет задано число 0F, функция возвратит -17.77777777777778C.
Регулярное выражение проверяет любые числа, оканчивающиеся на F. Число градусов по Фаренгейту доступно для Вашей функции через параметр $1. Функция устанавливает градусы по Цельсию, базируясь на градусах по Фаренгейту, переданных в строке функции f2c. f2c возвращает затем градусы по Цельсию. Эта функция приблизительно соответствует флагу s///e в Perl.
function f2c(x) {
var s = String(x)
var test = /(\d+(?:\.\d*)?)F\b/g
return s.replace
(test,
function (str,p1,offset,s) {
return ((p1-32) * 5/9) + "C";
}
)
}
Return
Специфицирует значение, возвращаемое функцией.
Реализован в
JavaScript 1.0, NES 2.0
Версия ECMA
ECMA-262
Синтаксис
return expression;
Параметры
expression
Возвращаемое выражение.
Примеры
Следующая функция возвращает квадрат своего аргумента x, где x это число.
function square(x) {
return x * x;
}
Reverse
Переворачивает элементы массива: первый элемент массива становится последним, а последний - первым.
Метод из
Реализован в
JavaScript 1.1, NES 2.0
Версия ECMA
ECMA-262
Синтаксис
reverse()
Параметры
Отсутствуют.
Описание
Метод reverse переворачивает элементы вызывающего объекта массива.
Примеры
Создаётся массив myArray, содержащиё три элемента, затем массив переворачивается.
myArray = new Array("one", "two", "three")
myArray.reverse()
Этот код изменяет массив myArray так, что:
myArray[0] становится "three"
myArray[1] становится "two"
myArray[2] становится "one"
См. также
,
Round
Возвращает число, округлённое до ближайшего целого.
Метод из
Static
Реализован в
JavaScript 1.0, NES 2.0
Версия ECMA
ECMA-262
Синтаксис
round(x)
Параметр
x
Число.
Описание
Если дробная часть числа составляет .5 или больше, аргумент округляется до ближайшего целого в сторону увеличения. Если дробная часть числа меньше .5, аргумент округляется до ближайшего целого в сторону уменьшения.
Поскольку round это static-метод из Math, Вы всегда используете его так: Math.round(), а не как метод Math-объекта, созданного Вами.
Сдвигает первый операнд на специфицированное количество битов влево. Излишние биты, сдвинутые влево, отбрасываются. Справа биты заполняются нулями.
Например, 9<<2 даёт 36, поскольку 1001 сдвигается на 2 бита влево и становится 100100, т.е. 36.
>> (Сдвиг Вправо с Сохранением Знака)
Сдвигает первый операнд на специфицированное количество битов вправо. Излишние биты, сдвинутые вправо, отбрасываются. Слева идёт заполнение копиями самого левого бита.
Например, 9>>2 даст 2, поскольку 1001, двинутое на 2 бита вправо, становится 10, т.е. 2. Аналогично, -9>>2 даст -3, поскольку знак сохраняется.
>>> (Сдвиг Вправо с Заполнением Нулями)
Сдвигает первый операнд на специфицированное количество битов вправо.
Излишние биты, сдвинутые вправо, отбрасываются. Слева биты заполняются нулями.
Например, 19>>>2 даёт 4, поскольку 10011, сдвинутое два раза вправо, становится 100, то есть 4. Для неотрицательных чисел сдвиг вправо с заполнением нулями и сдвиг вправо с сохранением знака дают тот же самый результат.
Search
Выполняет поиск совпадения регулярного выражения и данного String-объекта.
Метод из
Реализован в
JavaScript 1.2
Версия ECMA
ECMA-262 Edition 3
Синтаксис
search(regexp)
Параметр
regexp
Имя регулярного выражения. Это может быть имя переменной или литерал..
Описание
В случае успеха, search возвращает индекс регулярного выражения в строке. Иначе, возвращает -1.
Если Вы хотите знать, найден ли в строке патэрн, используйте search (аналогично методу test регулярного выражения); для получения дополнительно информации (но более медленного выполнения) используйте (аналогично методу exec регулярного выражения).
Пример
Это пример печатает сообщение, содержание которого зависит от успешности теста.
function testinput(re, str){
if (str.search(re) != -1)
midString = " contains ";
else
midString = " does not contain ";
document.write (str + midString + re.source);
}
SetDate
Устанавливает число день/месяца в специфицированной дате в соответствии с локальным временем.
Метод из
Реализован в
JavaScript 1.0, NES 2.0
Версия ECMA
ECMA-262
Синтаксис
setDate(dayValue)
Параметры
dayValue
Целое от 1 до 31 - число месяца.
Примеры
Второй оператор изменяет день для theBigDay на July 24.
theBigDay = new Date("July 27, 1962 23:30:00")
theBigDay.setDate(24)
См. также
, .
SetFullYear
Устанавливает полный год в специфицированной дате в соответствии с локальным временем.
Метод из
Реализован в
JavaScript 1.3
Версия ECMA
ECMA-262
Синтаксис
setFullYear(yearValue[, monthValue, dayValue])
Параметры
yearValue
Целое, специфицирующее год, например, 1995.
monthValue
Целое от 0 до 11, представляющее месяцы с января по декабрь.
dayValue
Целое от 1 до 31, представляющее число месяца. Если Вы специфицируете параметр dayValue, Вы обязаны также специфицировать monthValue.
Описание
Если Вы не специфицируете параметры monthValue и dayValue, используются значения, возвращаемые из методов getMonth и getDate.
Если специфицированный Вами параметр находится за пределами ожидаемого диапазона, setFullYear
пытается обновить другие параметры и информацию даты Date
-объекте соответствующим образом. Например, если Вы специфицируете 15 для monthValue, year увеличивается на 1 (year + 1), и 3 используется для month.
Примеры
theBigDay = new Date();
theBigDay.setFullYear(1997);
См. также
,, .
SetHours
Устанавливает часы в специфицированной дате в соответствии с локальным временем.
Метод из
Реализован в
JavaScript 1.0, NES 2.
JavaScript 1.3: добавлены параметры minutesValue, secondsValue и msValue.
Целое в диапазоне от 0 до 59 - секунды. Если Вы специфицируете параметр secondsValue, Вы обязаны также специфицировать minutesValue.
msValue
Число в диапазоне от 0 до 999 - миллисекунды. Если Вы специфицируете параметр msValue, Вы обязаны также специфицировать minutesValue и secondsValue.
Описание
Если Вы не специфицируете параметры minutesValue, secondsValue и msValue, используются значения возвращаемые из методов getUTCMinutes, getUTCSeconds и getMilliseconds.
Если специфицированный Вами параметр находится вне пределов ожидаемого диапазона, setHours пытается соответственно обновить информацию даты в Date
-объекте. Например, Если Вы используете 100 для secondsValue, минуты увеличатся на 1 (min + 1), а для секунд будет использовано значение 40.
Примеры
theBigDay.setHours(7)
См. также
, .
SetMember
Метод. Устанавливает значение свойства объекта в JavaScript. Эквивалентен "this.name= value" в JavaScript.
Объявление
public void setMember(String name, Object value)
SetMilliseconds
Устанавливает миллисекунды в специфицированной дате в соответствии с локальным временем.
Метод из
Реализован в
JavaScript 1.3
Версия ECMA
ECMA-262
Синтаксис
setMilliseconds(millisecondsValue)
Параметры
millisecondsValue
Число в диапазоне от 0 до 999 - миллисекунды.
Описание
Если Вы специфицируете число вне ожидаемого диапазона значений, информация даты обновляется в Date
-объекте соответствующим образом. Например, если Вы специфицировали 1005, количество секунд увеличится на 1, а 5 будет использовано для миллисекунд.
Примеры
theBigDay = new Date();
theBigDay.setMilliseconds(100);
См. также
, .
SetMinutes
Устанавливает минуты в специфицированной дате в соответствии с локальным временем.
Метод из
Реализован в
JavaScript 1.0, NES 2.0
JavaScript 1.3: добавлены параметры secondsValue
и msValue.
Версия ECMA
ECMA-262
Синтаксис
setMinutes(minutesValue[, secondsValue, msValue])
Версии, предшествовавшие JavaScript 1.3:
setMinutes(minutesValue)
Параметры
minutesValue
Целое в диапазоне от 0 до 59 - минуты.
secondsValue
Целое в диапазоне от 0 до 59 - секунды. Если Вы специфицируете параметр secondsValue, Вы обязаны также специфицировать minutesValue.
msValue
Целое в диапазоне от 0 до 999 - миллисекунды. Если Вы специфицируете параметр
msValue, Вы обязаны также специфицировать minutesValue и secondsValue.
Примеры
theBigDay.setMinutes(45)
Описание
Если Вы не специфицируете параметры secondsValue и msValue, используются значения, возвращаемые из методов getSeconds и getMilliseconds.
Если специфицированный Вами параметр находится вне пределов ожидаемого диапазона, setMinutes пытается соответственно обновить информацию даты в Date
-объекте. Например, если Вы используете 100 для secondsValue, минуты (minutesValue) увеличатся на 1 (minutesValue + 1), а 40 будет использоваться для секунд.
См. также
, .
SetMonth
Устанавливает месяц в специфицированной дате в соответствии с локальным временем.
Метод из
Реализован в
JavaScript 1.0, NES 2.0
JavaScript 1.3: добавлен параметр dayValue.
Версия ECMA
ECMA-262
Синтаксис
setMonth(monthValue[, dayValue])
Версии до JavaScript 1.3:
setMonth(monthValue)
Параметры
monthValue
Целое в диапазоне от 0 до 11 (месяц с января по декабрь).
dayValue
Целое в диапазоне от 1 до 31 - число месяца.
Описание
Если Вы не специфицируете параметр dayValue, используется значение, возвращаемое методом getDate.
Если специфицированный Вами параметр находится за пределами ожидаемого диапазона, setMonth
пытается соответственно обновить информацию даты в Date-объекте. Например, если Вы используете 15 для monthValue, год будет увеличен на 1 (year + 1), а 3 будет использовано для month.
Примеры
theBigDay.setMonth(6)
См. также
, .
SetSeconds
Устанавливает секунды в специфицированной дате в соответствии с локальным временем.
Метод из
Реализован в
JavaScript 1.0, NES 2.0
JavaScript 1.3: добавлен параметр msValue.
Версия ECMA
ECMA-262
Синтаксис
setSeconds(secondsValue[, msValue])
Версии до JavaScript 1.3:
setSeconds(secondsValue)
Параметры
secondsValue
Целое от 0 до 59.
msValue
Число от 0 до 999 - миллисекунды.
Описание
Если Вы не специфицируете параметр msValue, используется значение, возвращаемое методом getMilliseconds.
Если специфицированный Вами параметр находится за пределами ожидаемого диапазона, setSeconds пытается соответственно обновить информацию даты в Date-объекте. Например, если Вы используете 100 для secondsValue, минуты, хранимые в Date-объекте, увеличатся на 1, а 40 будет использовано для секунд.
Примеры
theBigDay.setSeconds(30)
См. также
, .
SetSlot
Метод. Устанавливает значение элемента массива объекта в JavaScript. Эквивалентен "this[index] = value" в JavaScript.
Объявление
public void setSlot(int index, Object value)
SetTime
Устанавливает значение объекта Date в соответствии с локальным временем.
Метод из
Реализован в
JavaScript 1.0, NES 2.0
Версия ECMA
ECMA-262
Синтаксис
setTime(timevalue )
Параметры
timevalue
Целое число - количество миллисекунд, прошедших после 1 января 1970 года 00:00:00.
Описание
Используйте метод setTime, чтобы помочь назначить дату и время другому объекту Date.
Примеры
theBigDay = new Date("July 1, 1999") sameAsBigDay = new Date()