This commit is contained in:
Ilya Kantor 2015-07-04 23:42:45 +03:00
parent f90d33d8bf
commit 9b3e650cbc
33 changed files with 95 additions and 22 deletions

View file

@ -1,22 +0,0 @@
# Строки [в работе]
В строках улучшена поддержка юникода и добавлены новые методы.
## Поддержка юникода
Это улучшение имеет значение только если мы поддерживаем китайский и другие языки, которые выходят за границы стандартного 2-байтового диапазона.
Дело в том, что долгое время JavaScript имел внутреннюю кодировку UTF-16, то есть под каждый символ отводилось ровно два байта.
Под всевозможные символы всех языков мира двух байт не хватает.
Поэтому, к примеру, китайские иероглифы представляются двумя юникодными, например:
```js
//+ run
alert( "我".length ); // 2
```
Такое представление, когда одному символу языка соответствует два юникодных символа, называют "суррогатные пары".

View file

@ -0,0 +1,95 @@
# Строки и регэкспы
Есть ряд улучшений и новых методов для строк и регулярных выражений.
Начнём с, пожалуй, самого важного.
## Строки-шаблоны
Добавлен новый вид кавычек для строк:
```js
let str = `обратные кавычки`;
```
Основные отличия от `"…"` и `'…'`:
<ul>
<li>**В них разрешён перевод строки.**
Например:
```js
//+ run
alert(`моя
многострочная
строка`);
```
Заметим, что пробелы и, собственно, перевод строки также входят в строку, и будут выведены.
</li>
<li>**Можно вставлять выражения при помощи `${…}`.**
Например:
```js
//+ run
'use strict';
let apples = 2;
let oranges = 3;
alert(`${apples} + ${oranges} = ${apples + oranges}`); // 2 + 3 = 5
```
Как видно, можно вставлять как и значение переменной, так и более сложные выражения, вызовы функций и т.п. Это называют "интерполяцией".
</li>
<li>**Можно использовать свою функцию шаблонизации для строк.**
Перед первой обратной кавычкой может стоять имя функции, которая запустится с этой строкой:
```js
let str = f`...`;
```
Эти два кода делают одно и то же:
```js
//+ run
alert( eval`1 + 2 - 3` );
alert( eval("1 + 2 - 3") );
```
Пример использования:
...Однако, при первой
</li>
</ul>
Основные улучшения для строк -- улучшенная поддержка юникода. Кроме того, добавлены некоторые новые методы.
## Улучшена поддержка юникода
[smart header="А ваши сайты читают китайцы?"]
Это улучшение имеет значение только если мы поддерживаем китайский и другие языки, которые выходят за границы стандартного 2-байтового диапазона.
[/smart]
Внутренняя кодировка строк в JavaScript -- это UTF-16, то есть под каждый символ отводится ровно два байта.
Под всевозможные символы всех языков мира двух байт не хватает.
Поэтому, к примеру, китайские иероглифы представляются двумя юникодными символами, например:
```js
//+ run
alert( "我".length ); // 2
```
Такое представление, когда одному символу языка соответствует два юникодных символа, называют "суррогатные пары".
Ю

View file

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 110 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 113 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Before After
Before After