Строки JavaScript предназначены для хранения и управления текстом.
Строка JavaScript представляет собой ноль или более символов, заключенных в кавычки.
let text = "John Doe";Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p id="demo"></p>
<script>
let text = "John Doe"; // String written inside quotes
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Вы можете использовать одинарные или двойные кавычки:
let carName1 = "Volvo XC60";
// Double quotes
let carName2 = 'Volvo XC60'; // Single quotes Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p>Strings are written inside quotes. You can use single or double quotes:</p>
<p id="demo"></p>
<script>
let carName1 = "Volvo XC60"; // Double quotes
let carName2 = 'Volvo XC60'; // Single quotes
document.getElementById("demo").innerHTML =
carName1 + " " + carName2;
</script>
</body>
</html>
Вы можете использовать кавычки внутри строки, если они не соответствуют кавычкам. вокруг строки:
let answer1 = "It's alright";
let answer2 = "He is called 'Johnny'";
let answer3 = 'He is called "Johnny"';Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p>You can use quotes inside a string, as long as they don't match the quotes surrounding the string.</p>
<p id="demo"></p>
<script>
let answer1 = "It's alright";
let answer2 = "He is called 'Johnny'";
let answer3 = 'He is called "Johnny"';
document.getElementById("demo").innerHTML =
answer1 + "<br>" + answer2 + "<br>" + answer3;
</script>
</body>
</html>
Чтобы узнать длину строки, используйте встроенное свойство length:
let text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
let length = text.length;Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<h2>The length Property</h2>
<p>The length of the string is:</p>
<p id="demo"></p>
<script>
let text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
document.getElementById("demo").innerHTML = text.length;
</script>
</body>
</html>
Поскольку строки должны быть записаны в кавычках, JavaScript неправильно интерпретирует эту строку:
let text = "We are the so-called "Vikings" from the north.";Строка будет обрезана до «Мы так называемые».
Чтобы избежать этой проблемы, можно использовать управляющий символ обратной косой черты.
Обратная косая черта (\) превращает специальные символы в строковые символы:
| Code | Result | Description |
|---|---|---|
| \' | ' | Single quote |
| \" | " | Double quote |
| \\ | \ | Backslash |
Последовательность \" вставляет в строку двойную кавычку:
let text = "We are the so-called \"Vikings\" from the north.";Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p>The escape sequence \" inserts a double quote in a string.</p>
<p id="demo"></p>
<script>
let text = "We are the so-called \"Vikings\" from the north.";
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Последовательность \' вставляет в строку одинарную кавычку:
let text= 'It\'s alright.';Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p>The escape sequence \' inserts a single quote in a string.</p>
<p id="demo"></p>
<script>
let text = 'It\'s alright.';
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Последовательность \\ вставляет обратную косую черту в строку:
let text = "The character \\ is called backslash.";Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p>The escape sequence \\ inserts a backslash in a string.</p>
<p id="demo"></p>
<script>
let text = "The character \\ is called backslash.";
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
В JavaScript допустимы еще шесть escape-последовательностей:
Backspace
Подача формы
Новая линия
Возврат каретки
Горизонтальный табулятор
Вертикальный табулятор
Шесть escape-символов, представленных выше, изначально были созданы для управления пишущие машинки, телетайпы и факсы. Они не имеют никакого смысла в HTML.
Для лучшей читаемости программисты часто предпочитают избегать строк кода длиной более 80 символов.
Если оператор JavaScript не умещается в одной строке, лучшее место для разрыва это после оператора:
document.getElementById("demo").innerHTML =
"Hello Dolly!";Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Statements</h2>
<p>
The best place to break a code line is after an operator or a comma.
</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
"Hello Dolly!";
</script>
</body>
</html>
Вы также можете разделить строку кода внутри текстовой строки с помощью одной обратной косой черты:
document.getElementById("demo").innerHTML =
"Hello \
Dolly!";Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p>
You can break a code line within a text string with a backslash.
</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hello \
Dolly!";
</script>
</body>
</html>
Метод \ не является предпочтительным. Возможно, он не имеет универсальной поддержки.
Некоторые браузеры поддерживают не допускать пробелов после символа \.
Более безопасный способ разбить строку — использовать строку добавление:
document.getElementById("demo").innerHTML = "Hello " +
"Dolly!";Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p>The safest way to break a code line in a string is using string addition.</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hello " +
"Dolly!";
</script>
</body>
</html>
Вы не можете разбить строку кода обратной косой чертой:
document.getElementById("demo").innerHTML = \
"Hello Dolly!";Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Statements</h2>
<p id="demo">You cannot break a code line with a \ backslash.</p>
<script>
document.getElementById("demo").innerHTML = \
"Hello Dolly.";
</script>
</body>
</html>
Обычно строки JavaScript представляют собой примитивные значения, созданные из литералов:
let x = "John";Но строки также можно определить как объекты с помощью ключевого слова new:
let y = new String("John");let x = "John";
let y = new String("John");Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Strings</h1>
<p id="demo"></p>
<script>
// x is a string
let x = "John";
// y is an object
let y = new String("John");
document.getElementById("demo").innerHTML =
typeof x + "<br>" + typeof y;
</script>
</body>
</html>
Не создавайте объекты Strings.
Ключевое слово new усложняет код и замедляет скорость выполнения.
Строковые объекты могут давать неожиданные результаты:
При использовании оператора == x и y равны:
let x = "John";
let y = new String("John");Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>Never Create Strings as Objects</h2>
<p>Strings and objects cannot be safely compared.</p>
<p id="demo"></p>
<script>
let x = "John"; // x is a string
let y = new String("John"); // y is an object
document.getElementById("demo").innerHTML = (x==y);
</script>
</body>
</html>
При использовании оператора === x и y не равны:
let x = "John";
let y = new String("John");Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>Never Create Strings as Objects</h2>
<p>Strings and objects cannot be safely compared.</p>
<p id="demo"></p>
<script>
let x = "John"; // x is a string
let y = new String("John"); // y is an object
document.getElementById("demo").innerHTML = (x===y);
</script>
</body>
</html>
Обратите внимание на разницу между (x==y) и (x===y).
(x == y) true или false?
let x = new String("John");
let y = new String("John");Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>Never Create Strings as Objects</h2>
<p>JavaScript objects cannot be compared.</p>
<p id="demo"></p>
<script>
let x = new String("John"); // x is an object
let y = new String("John"); // y is an object
document.getElementById("demo").innerHTML = (x==y);
</script>
</body>
</html>
(x === y) true или false?
let x = new String("John");
let y = new String("John");Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>Never Create Strings as Objects</h2>
<p>JavaScript objects cannot be compared.</p>
<p id="demo"></p>
<script>
let x = new String("John"); // x is an object
let y = new String("John"); // y is an object
document.getElementById("demo").innerHTML = (x===y);
</script>
</body>
</html>
Сравнение двух объектов JavaScript всегда возвращает false.
Для получения полной справки по строкам перейдите по ссылке:
Полное руководство по строкам JavaScript.
Справочник содержит описания и примеры всех строковых свойств и методов.