String.raw() - JavaScript String 对象
String.raw()
String.raw()是一个模板字符串的标签函数,它的作用类似于 Python 中的字符串前缀r
和 C#中的字符串前缀@
(还是有点区别的,详见隔壁 Chromium 那边的这个 issue),是用来获取一个模板字符串的原始字符串的,比如说,占位符(例如${foo}
)会被处理为它所代表的其他字符串,而转义字符(例如\n
)不会。
语法
String.raw(callSite, ...substitutions) String.raw`templateString`
参数
callSite
一个模板字符串的“调用点对象”。类似{raw:['foo','bar','baz']}
。...substitutions
任意个可选的参数,表示任意个内插表达式对应的值。templateString
模板字符串,可包含占位符(${...}
)。返回值
给定模板字符串的原始字符串。
异常
TypeError
如果第一个参数没有传入一个格式正确的对象,则会抛出TypeError
异常。描述
在大多数情况下,String.raw()
是用来处理模版字符串的.不要被上面复杂的参数要求吓到,因为像所有的 tag functions一样,你通常不需要把它看成一个普通函数,你只需要把它放在模板字符串前面就可以了,而不是在它后面加个括号和一堆参数来调用它,引擎会替你去调用它。
String.raw()
是唯一一个内置的模板字符串标签函数,因为它太常用了。不过它并没有什么特殊能力,你自己也可以实现一个和它功能一模一样的标签函数。
示例
使用String.raw()
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'
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)