Skip to content

Commit

Permalink
translation(js): Web/JavaScript/Reference/Global_Objects/String/raw (#…
Browse files Browse the repository at this point in the history
…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
AdriandeCita and undead404 authored Feb 4, 2022
1 parent bab4ff7 commit 743ef38
Showing 1 changed file with 105 additions and 0 deletions.
105 changes: 105 additions & 0 deletions files/uk/web/javascript/reference/global_objects/string/raw/index.md
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)

0 comments on commit 743ef38

Please sign in to comment.