aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/javascript/reference/global_objects/string/raw/index.html
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/javascript/reference/global_objects/string/raw/index.html
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/zh-cn/web/javascript/reference/global_objects/string/raw/index.html')
-rw-r--r--files/zh-cn/web/javascript/reference/global_objects/string/raw/index.html113
1 files changed, 113 insertions, 0 deletions
diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/raw/index.html b/files/zh-cn/web/javascript/reference/global_objects/string/raw/index.html
new file mode 100644
index 0000000000..89c4d568d5
--- /dev/null
+++ b/files/zh-cn/web/javascript/reference/global_objects/string/raw/index.html
@@ -0,0 +1,113 @@
+---
+title: String.raw()
+slug: Web/JavaScript/Reference/Global_Objects/String/raw
+tags:
+ - JavaScript
+ - Method
+ - Reference
+ - String
+ - 参考
+ - 字符串
+ - 方法
+translation_of: Web/JavaScript/Reference/Global_Objects/String/raw
+---
+<div>{{JSRef()}}</div>
+
+<p><strong>String.raw()</strong> 是一个<a href="/zh-CN/docs/Web/JavaScript/Reference/template_strings">模板字符串</a>的标签函数,它的作用类似于 Python 中的字符串前缀 <code>r</code> 和 C# 中的字符串前缀 <code>@</code>(还是有点区别的,详见隔壁 Chromium 那边的<a href="https://bugs.chromium.org/p/v8/issues/detail?id=5016">这个 issue</a>),是用来获取一个模板字符串的原始字符串的,比如说,占位符(例如 <code>${foo}</code>)会被处理为它所代表的其他字符串,而转义字符(例如 <code>\n</code>)不会。</p>
+
+<h2 id="语法">语法</h2>
+
+<pre class="syntaxbox"><code>String.raw(<var>callSite</var>, <var>...substitutions</var>)
+
+String.raw`templateString`
+</code></pre>
+
+<h3 id="参数">参数</h3>
+
+<dl>
+ <dt><code>callSite</code></dt>
+ <dd>一个模板字符串的“调用点对象”。类似<code>{ raw: ['foo', 'bar', 'baz'] }</code>。</dd>
+ <dt><code>...substitutions</code></dt>
+ <dd>任意个可选的参数,表示任意个内插表达式对应的值。</dd>
+ <dt><code>templateString</code></dt>
+ <dd>模板字符串,可包含占位符(<code>${...}</code>)。</dd>
+</dl>
+
+<h3 id="返回值">返回值</h3>
+
+<p>给定模板字符串的原始字符串。</p>
+
+<h3 id="异常">异常</h3>
+
+<dl>
+ <dt><code>{{jsxref("TypeError")}}</code></dt>
+ <dd>如果第一个参数没有传入一个格式正确的对象,则会抛出 <code>TypeError</code> 异常。</dd>
+</dl>
+
+<h2 id="描述">描述</h2>
+
+<p>在大多数情况下, <code>String.raw()</code>是用来处理模版字符串的. 不要被上面复杂的参数要求吓到,因为像所有的 <a href="/en-US/docs/Web/JavaScript/Reference/template_strings#Tagged_template_literals">tag functions</a>一样,你通常不需要把它看成一个普通函数,你只需要把它放在模板字符串前面就可以了,而不是在它后面加个括号和一堆参数来调用它,引擎会替你去调用它。</p>
+
+<p><code>String.raw()</code> 是唯一一个内置的模板字符串标签函数,因为它太常用了。不过它并没有什么特殊能力,你自己也可以实现一个和它功能一模一样的标签函数。</p>
+
+<h2 id="示例">示例</h2>
+
+<h3 id="使用_String.raw">使用 <code>String.raw()</code></h3>
+
+<pre class="brush: js">String.raw`Hi\n${2+3}!`;
+// 'Hi\n5!',Hi 后面的字符不是换行符,\ 和 n 是两个不同的字符
+
+String.raw `Hi\u000A!`;
+// "Hi\u000A!",同上,这里得到的会是 \、u、0、0、0、A 6个字符,
+// 任何类型的转义形式都会失效,保留原样输出,不信你试试.length
+
+let name = "Bob";
+String.raw `Hi\n${name}!`;
+// "Hi\nBob!",内插表达式还可以正常运行
+
+
+// 正常情况下,你也许不需要将 String.raw() 当作函数调用。
+// 但是为了模拟 `t${0}e${1}s${2}t` 你可以这样做:
+String.raw({ raw: 'test' }, 0, 1, 2); // 't0e1s2t'
+// 注意这个测试, 传入一个 string, 和一个类似数组的对象
+// 下面这个函数和 `foo${2 + 3}bar${'Java' + 'Script'}baz` 是相等的.
+String.raw({
+ raw: ['foo', 'bar', 'baz']
+}, 2 + 3, 'Java' + 'Script'); // 'foo5barJavaScriptbaz'
+</pre>
+
+<h2 id="规范">规范</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">规范</th>
+ <th scope="col">状态</th>
+ <th scope="col">备注</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-string.raw', 'String.raw')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>Initial definition.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-string.raw', 'String.raw')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容性">浏览器兼容性</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("javascript.builtins.String.raw")}}</p>
+
+<h2 id="参见">参见</h2>
+
+<ul>
+ <li><a href="/zh-CN/docs/Web/JavaScript/Reference/template_strings">模板字符串</a></li>
+ <li>{{jsxref("String")}}</li>
+ <li><a href="/zh-CN/docs/Web/JavaScript/Reference/Lexical_grammar">JavaScript 词法</a></li>
+</ul>