JavaScript. Подробное руководство, 6-е издание, стр. 20

<b>var later = new Date(2010, 0, 1, 17, 10, 30);// Та же дата, в 17:10:30 локального времени </b>

<b>var now = new Date();// Текущие дата и время </b>

<b>var elapsed = now - then; // Разность дат: интервал в миллисекундах</b>

<b>later.getFullYear()// =&gt; 2010</b>

<b>later.getMonth() // =&gt; 0: счет месяцев начинается с нуля</b>

<b>later.getDate()  // =&gt; 1: счет дней начинается с единицы</b>

<b>later.getDay() // =&gt; 5: день недели. 0 - воскр., 5 - пяти.</b>

<b>later.getHours()   // =&gt; 17: 17 часов локального времени </b>

<b>later.getUTCHours() // часы по UTC; зависит от часового пояса </b>

<b>later.toStrlng() </b>

<b>// =&gt; &quot;Fri Jan 01 2010 17:10:30 GMT+0300&quot;</b>

<b>later.toUTCString() // =&gt; &quot;Fri, 01 Jan 2010 14:10:30 GMT&quot;</b>

<b>later.toLocaleDateString() // =&gt; &quot;1 Январь 2010 г.&quot;</b>

<b>later.toLocaleTimeString() // =&gt; &quot;17:10:30&quot;</b>

<b>later.toIS0String()  // =&gt; &quot;2010-01-01T14:10:30.000Z&quot;</b>

3.2. Текст

Строка - это неизменяемая, упорядоченная последовательность 16-битных значений, каждое из которых обычно представляет символ Юникода. Строки в JavaScript являются типом данных, используемым для представления текста. Длина строки - это количество 16-битных значений, содержащихся в ней. Нумерация символов в строках (и элементов в массивах) в языке JavaScript начинается с нуля: первое 16-битное значение находится в позиции 0, второе - в позиции 1 и т. д. Пустая строка - это строка, длина которой равна 0. В языке JavaScript нет специального типа для представления единственного элемента строки. Для представления единственного 16-битного значения просто используется строка с длиной, равной 1.

3.2.1. Строковые литералы

Чтобы включить литерал строки в JavaScript-программу, достаточно просто заключить символы строки в парные одинарные или двойные кавычки (' или "). Символы двойных кавычек могут содержаться в строках, ограниченных символами одинарных кавычек, а символы одинарных кавычек - в строках, ограниченных символами двойных кавычек. Ниже приводятся несколько примеров строковых литералов:

<b>// Это пустая строка: в ней ноль символов</b>

<b>'testing'</b>

<b>&quot;3.14&quot;</b>

<b>'name=&quot;myform&quot;'</b>

<b>&quot;Вы предпочитаете книги издательства O'Reilly, не правда ли?&quot;</b>

<b>&quot;В этом строковом литерале\nдве строки”</b>

<b>&quot;пи - это отношение длины окружности к ее диаметру&quot;</b>

В ECMAScript 3 строковые литералы должны записываться в одной строке программы и не могут разбиваться на две строки. Однако в ECMAScript 5 строковые литералы можно разбивать на несколько строк, заканчивая каждую строку, кроме последней, символом обратного слэша (\). Ни один из символов обратного слэша, как и следующие за ними символы перевода строки, не будут включены в строковый литерал. Чтобы включить в строковый литерал символ перевода строки, следует использовать последовательность символов \п (описывается ниже):

<b>&quot;две\пстроки&quot; // Строковый литерал, представляющий две строки </b>

<b>&quot;одна\        // Одна строка, записанная в трех строках. Только в ECMAScript 5</b>

<b>длинная\ </b>

<b>строка&quot;</b>

Символы, кодовые пункты и строки JavaScript

Для представления символов Юникода в языке JavaScript используется кодировка UTF-16, а строки JavaScript являются последовательностями 16-битных значений без знака. Большинство наиболее часто используемых символов Юникода (из «основной многоязыковой матрицы») имеют кодовые пункты, умещающиеся в 16 бит, и могут быть представлены единственным элементом строки. Символы Юникода, кодовые пункты которых не умещаются в 16 бит, кодируются в соответствии с правилами кодировки UTF-16 как последовательности (известные как «суррогатные пары») из двух 16-битных значений. Это означает, что строка JavaScript, имеющая длину, равную 2 (два 16-битных значения), может представлять единственный символ Юникода:

<b>var Р = &quot;71&quot;: // 71 - это 1 символ с 16-битным кодовым пунктом 0х0Зс0</b>

<b>var е = &quot;<i>е</i>&quot;;  // <i>е</i> - это 1 символ с 17-битным кодовым пунктом 0x1d452 </b>

<b>р.length      // =&gt; 1: р содержит единственный 16-битный элемент </b>

<b>е.length      // =&gt; 2: в кодировке UTF-16 символ <i>е</i> определяется двумя </b>

<b>              // 16-битными значениями: &quot;\ud835\udc52&quot;</b>

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

*********************************************

Обратите внимание, что, ограничивая строку одинарными кавычками, необходимо проявлять осторожность в обращении с апострофами, употребляемыми в английском языке для обозначения притяжательного падежа и в сокращениях; как, например, в словах «can’t» и «O’Reilly’s». Поскольку апостроф и одиночная кавычка - это одно и то же, необходимо при помощи символа обратного слэша (\) «экранировать» апострофы, расположенные внутри одиночных кавычек (подробнее об этом - в следующем разделе).

Программы на клиентском JavaScript часто содержат строки HTML-кода, а HTML-код, в свою очередь, часто содержит строки JavaScript-кода. Как и в JavaScript, в языке HTML для ограничения строк применяются либо одинарные, либо двойные кавычки. Поэтому при объединении JavaScript- и HTML-кода есть смысл придерживаться одного «стиля» кавычек для JavaScript, а другого - для HTML. В следующем примере строка «Спасибо» в JavaScript-выражении заключена в одинарные кавычки, а само выражение, в свою очередь, заключено в двойные кавычки как значение HTML-атрибута обработчика событий: