es6
0
1-js/10-es-modern/3-es-function/article.md
Normal file
|
@ -1,22 +0,0 @@
|
|||
|
||||
# Строки [в работе]
|
||||
|
||||
В строках улучшена поддержка юникода и добавлены новые методы.
|
||||
|
||||
## Поддержка юникода
|
||||
|
||||
Это улучшение имеет значение только если мы поддерживаем китайский и другие языки, которые выходят за границы стандартного 2-байтового диапазона.
|
||||
|
||||
Дело в том, что долгое время JavaScript имел внутреннюю кодировку UTF-16, то есть под каждый символ отводилось ровно два байта.
|
||||
|
||||
Под всевозможные символы всех языков мира двух байт не хватает.
|
||||
|
||||
Поэтому, к примеру, китайские иероглифы представляются двумя юникодными, например:
|
||||
|
||||
```js
|
||||
//+ run
|
||||
alert( "我".length ); // 2
|
||||
```
|
||||
|
||||
Такое представление, когда одному символу языка соответствует два юникодных символа, называют "суррогатные пары".
|
||||
|
95
1-js/10-es-modern/4-es-string/article.md
Normal 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
|
||||
```
|
||||
|
||||
Такое представление, когда одному символу языка соответствует два юникодных символа, называют "суррогатные пары".
|
||||
|
||||
Ю
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |