-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
translation(js): Web/JavaScript/Reference/Global_Objects/String/raw (#…
…230) * translation(js): Web/JavaScript/Reference/Global_Objects/String/raw * Apply suggestions from code review Co-authored-by: Vitalii Perehonchuk <[email protected]> Co-authored-by: Vitalii Perehonchuk <[email protected]>
- Loading branch information
1 parent
bab4ff7
commit 743ef38
Showing
1 changed file
with
105 additions
and
0 deletions.
There are no files selected for viewing
105 changes: 105 additions & 0 deletions
105
files/uk/web/javascript/reference/global_objects/string/raw/index.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
--- | ||
title: String.raw() | ||
slug: Web/JavaScript/Reference/Global_Objects/String/raw | ||
tags: | ||
- ECMAScript 2015 | ||
- JavaScript | ||
- Method | ||
- Reference | ||
- String | ||
- Polyfill | ||
browser-compat: javascript.builtins.String.raw | ||
--- | ||
{{JSRef}} | ||
|
||
Статичний метод **`String.raw()`** — це тегова функція [шаблонних літералів](/uk/docs/Web/JavaScript/Reference/Template_literals). Вона _подібна_ до префіксу `r` в Python, або префіксу `@` в C# для рядкових літералів. (Проте вони не _ідентичні_; пояснення в [цьому обговоренні (англ.)](https://bugs.chromium.org/p/v8/issues/detail?id=5016).) Вона використовується для отримання необроблених рядкових форм шаблонних літералів — тобто таких, в яких опрацьовані вирази підставлення (наприклад `${foo}`), а екрановані послідовності (зокрема `\n`) — ні. | ||
|
||
{{EmbedInteractiveExample("pages/js/string-raw.html")}} | ||
|
||
## Синтаксис | ||
|
||
```js | ||
String.raw(callSite, ...substitutions) | ||
|
||
String.raw`templateString` | ||
``` | ||
|
||
### Параметри | ||
|
||
- `callSite` | ||
- : Сформований об'єкт виклику шаблонної функції, як от `{ raw: ['foo', 'bar', 'baz'] }`. | ||
- `...substitutions` | ||
- : Містить значення для підставлення. | ||
- `templateString` | ||
- : {{jsxref("template_literals", "Шаблонний літерал", "", 1)}}; може містити (необов'язково) вирази підставлення (`${...}`). | ||
|
||
### Повернене значення | ||
|
||
Необроблена рядкова форма переданого шаблонного літерала. | ||
|
||
### Винятки | ||
|
||
- {{jsxref("TypeError")}} | ||
- : Викидається {{jsxref("TypeError")}}, якщо перший аргумент не є правильно сформованим об'єктом. | ||
|
||
## Опис | ||
|
||
Здебільшого метод `String.raw()` використовується з шаблонними літералами. Синтаксис, який наведено першим вище, використовується дуже рідко, оскільки JavaScript-рушій сам його викликає з правильними аргументами (так само як з іншими [теговими функціями](/uk/docs/Web/JavaScript/Reference/Template_literals#tehovani-shablonni-literaly)). | ||
|
||
`String.raw()` — це єдина вбудована тегова функція шаблонних літералів. Вона працює просто як усталена шаблонна функція, і виконує конкатенацію. Її можна навіть реалізувати самостійно в коді JavaScript. | ||
|
||
## Приклади | ||
|
||
### Застосування методу String.raw() | ||
|
||
```js | ||
String.raw`Привіт\n${2+3}!`; | ||
// 'Привіт\\n5!', символ після 'Привіт' насправді | ||
// не є символом початку рядка, | ||
// '\' та 'n' — це два окремі символи. | ||
|
||
String.raw`Привіт\u000A!`; | ||
// 'Привіт\\u000A!', так само тут, цього разу ми отримуємо символи | ||
// \, u, 0, 0, 0, A, 6. | ||
// Будь-які екрановані послідовності не працюватимуть, а | ||
// зворотні косі риски опинятимуться у виведеному рядку. | ||
// Можна це додатково підтвердити, перевіривши властивість .length | ||
// рядка. | ||
|
||
let name = 'Вова'; | ||
String.raw`Привіт\n${name}!`; | ||
// 'Привіт\\nВова!', вирази підставлення опрацьовано. | ||
|
||
// В нормальній ситуації потреби викликати String.raw() як функцію | ||
// не виникає, проте для відтворення `foo${2 + 3}bar${'Java' + 'Script'}baz` | ||
// можна використати такий вираз: | ||
String.raw({ | ||
raw: ['foo', 'bar', 'baz'] | ||
}, 2 + 3, 'Java' + 'Script'); // 'foo5barJavaScriptbaz' | ||
// Слід зауважити, що перший аргумент містить об'єкт з властивістю 'raw', | ||
// значення якої — це ітерований об'єкт з розділеними рядками, взятими з | ||
// шаблонного літералу. | ||
// Решта аргументів — це значення для підставлення. | ||
|
||
// Значенням властивості 'raw' першого аргументу може бути будь-яке ітероване | ||
// значення, навіть рядок! | ||
// Наприклад, 'test' буде вважатись послідовністю ['t', 'e', 's', 't']. | ||
// Наступний виклик еквівалентний такому виразові | ||
// `t${0}e${1}s${2}t`: | ||
String.raw({ raw: 'test' }, 0, 1, 2); // 't0e1s2t' | ||
``` | ||
|
||
## Специфікації | ||
|
||
{{Specifications}} | ||
|
||
## Сумісність із браузерами | ||
|
||
{{Compat}} | ||
|
||
## Дивіться також | ||
|
||
- Поліфіл методу `String.raw` наявний у [`core-js`](https://github.com/zloirock/core-js#ecmascript-string-and-regexp) | ||
- [Шаблонні літерали](/uk/docs/Web/JavaScript/Reference/Template_literals) | ||
- {{jsxref("String")}} | ||
- [Лексична граматика](/uk/docs/Web/JavaScript/Reference/Lexical_grammar) |