Basics

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

Строковый литерал – это последовательность из нуля или более Unicode символов, заключенная в одинарные или двойные кавычки (' или "). Сами символы двойных кавычек могут содержаться в строках, ограниченных символами одинарных кавычек, а символы одинарных кавычек – в строках, ограниченных символами двойных кавычек. Строковые литералы должны записываться в одной строке программы и не могут разбиваться на две строки. Чтобы включить в строковый литерал символ перевода строки, следует использовать последовательность символов \n, описание которой приведено в следующем разделе. Примеры строковых литералов:

"" // Это пустая строка: в ней ноль символов
'testing'
"3.14"
'name="myform"'
"Вы предпочитаете книги издательства O'Reilly, не правда ли?"
"В этом строковом литерале\nдве строки"
"π - это отношение длины окружности круга к его диаметру"

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

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

<a href="" onclick="alert('Спасибо')">Щелкни на мне</a>

Управляющие последовательности в строковых литералах

Символ обратного слэша (\) имеет специальное назначение в JavaScript-строках. Вместе с символами, следующими за ним, он обозначает символ, не представимый внутри строки другими способами. Например, \n – это управляющая последовательность (escape sequence), обозначающая символ перевода строки.

Другой пример – это последовательность \', обозначающая символ одинарной кавычки. Эта управляющая последовательность необходима для включения символа одинарной кавычки в строковый литерал, заключенный в одинарные кавычки. Теперь становится понятно, почему мы называем эти последовательности управляющими: здесь символ обратного слэша позволяет управлять интерпретацией символа одинарной кавычки. Вместо того, чтобы отмечать ею конец строки, мы используем ее как апостроф:

'You\'re right, it can\'t be a quote'

Константа

Значение

\0

Символ NUL (\u0000)

\b

«Забой» (\u0008)

\t

Горизонтальная табуляция (\u0009)

\n

Перевод строки (\u000A)

\v

Вертикальная табуляция (\u000B)

\f

Перевод страницы (\u000C)

\r

Возврат каретки (\u000D)

\"

Двойная кавычка (\u0022)

\'

Одинарная кавычка (\u0027)

\

Обратный слэш (\u005C)

Операции со строками

Одной из встроенных возможностей JavaScript является способность конкатенировать строки. Если оператор + применяется к числам, они складываются, а если к строкам - они объединяются, при этом вторая строка добавляется в конец первой. Например:

msg = "Hello, " + "world"; // Получается строка "Hello, world"
greeting = "Добро пожаловать на мою домашнюю страницу," + " " + name;

Для определения длины строки – количества содержащихся в ней символов – используется свойство length. Так, если переменная s содержит строку, то длину последней можно получить следующим образом:

s.length

Для работы со строками существует несколько методов. Так, можно получить последний символ в строке s:

last_char = s.charAt(s.length1)

Чтобы извлечь второй, третий и четвертый символы из строки s, применяется инструкция:

sub = s.substring(1,4);

Определить позицию первого символа «a» в строке s можно следующим образом:

i = s.indexOf('a');

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

last_char = s[s.length1];

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

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

var product = "21" * "2"; // в результате получится число 42.

Это обстоятельство можно взять на вооружение при необходимости преобразовать строку в число; для этого достаточно просто вычесть из строки значение 0:

var number = string_value  0;

Менее сложный и более прямолинейный способ преобразования строки в число заключается в обращении к конструктору Number() как к обычной функции:

var number = Number(string_value);

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

Более гибкий способ преобразования обеспечивается функциями parseInt() и parseFloat(). Эти функции преобразуют и возвращают произвольные числа, стоящие в начале строки, игнорируя любые нецифровые символы, расположенные вслед за числом. Функция parseInt() выполняет только целочисленное преобразование, тогда как parseFloat() может преобразовывать как целые, так и вещественные числа. Если строка начинается с символов «0x» или «0X», функция parseInt() интерпретирует строку как шестнадцатеричное число.1 Например:

parseInt("3 слепых мышки"); // Вернет 3
parseFloat("3.14 метров"); // Вернет 3.14
parseInt("12.34"); // Вернет 12
parseInt("0xFF"); // Вернет 255

В качестве второго аргумента функция parseInt() может принимать основание системы счисления. Корректными значениями являются числа в диапазоне от 2 до 36, например:

parseInt("11", 2); // Вернет 3 (1*2 + 1)
parseInt("ff", 16); // Вернет 255 (15*16 + 15)
parseInt("zz", 36); // Вернет 1295 (35*36 + 35)
parseInt("077", 8); // Вернет 63 (7*8 + 7)
parseInt("077", 10); // Вернет 77 (7*10 + 7)

Если методы parseInt() и parseFloat() оказываются не в состоянии выполнить преобразование, они возвращают значение NaN:

parseInt("eleven"); // Вернет NaN
parseFloat("$72.47"); // Вернет NaN

Last updated