在JS中有一类特殊的函数 —— 标签函数,用于自定义模版字符串的处理逻辑。...内置的标签函数 JS中只有一个内置标签函数 —— String.raw,用于获取模字符串的原始字符串形式,即: 处理替换(例如替换${name}为变量实际的值) 不处理转义序列(例如 \n) 对于如下代码...分别打印s1、s2的结果如下: 之所以s1有换行符,而s2没有,是因为默认情况,模版字符串会处理转义字符(比如这里的\n),而String.raw不会处理。...举个例子,我们在JS文件中定义两个变量(markup与style),IDE此时只认为这是两个普通的模版字符串(没有语法高亮): 现在,我们将String.raw分别重命名为html和css: const...html = String.raw; const css = String.raw; IDE有了提示信息后,就能根据提示中的语言对模版字符串进行高亮了: 自定义标签函数 刚才我们已经实现了String.raw
方法名 js版本 区别 formCharCode es5 不能识别大于0xFFFF的码点,会发生溢出。...\\ "Hi\\5" String.raw`Hi\u000A!...\\ true 2.2 String.raw(callSite, ...substitutions) 正常来说,这种方法很少使用,但是为了模拟 t${0}e${1}s${2}t String.raw(...String.raw({raw:['aa','bb','cc']},2+3,'java'+'Script') // aa5bbjavaScriptcc 2.3 String.raw()的代码实现 String.raw...js的方法类型有:实例方法、静态方法、原型方法三种。 实例方法 实例方法要用到function这个对象中的prototype属性来定义。
String.raw 简介 String.raw() 是一个模板字符串的标签函数,用来获取一个模板字符串的原始字符串的,比如说,占位符(例如 ${foo})会被处理为它所代表的其他字符串,而转义字符(例如...语法 String.raw(callSite, ...substitutions) String.raw`templateString` 参数 callSite 一个模板字符串的“调用点对象”。...使用示例 以下是一些关于 String.raw 的使用示例: String.raw`Hi\n${2+3}!`; // 'Hi\\n5!'...,内插表达式还可以正常运行 // 正常情况下,你也许不需要将 String.raw() 当作函数调用。...我们使用 String.raw 来实现以下文章开头的需求: const filePath = String.raw`D:\bianchengsanmei\blogs\categories\JavaScript
String.raw`Hi\n${2+3}!` // 实际返回 "Hi\\n5!",显示的是转义后的结果 "Hi\n5!" String.raw`Hi\u000A!...如果原字符串的斜杠已经转义,那么String.raw()会进行再次转义。...String.raw`Hi\\n` // 返回 "Hi\\\\n" String.raw`Hi\\n` === "Hi\\\\n" // true String.raw()方法可以作为处理模板字符串的基本方法...// `foo${1 + 2}bar` // 等同于 String.raw({ raw: ['foo', 'bar'] }, 1 + 2) // "foo3bar" 上面代码中,String.raw()...作为函数,String.raw()的代码实现基本如下。
这是什么东西听起来好厉害 不说都不知道,这是通过``定义的字符串带有的特性,我们光知道 `${}` 这种用法,却很少有人知道下边这种用法 `\n`.length //1 String.raw...+="***" return e } a`\n` //4 当我们不带括号使用函数,函数调用正常 上边的raw函数实际上是ES6内置的标签函数:String.raw...出于好奇,我试着如下调用了这个标签函数: String.raw(`\n`) String.raw("\n") raw()函数只接收无括号调用的方式 ---- LHS查询和RHS查询* JavaScript...对于这一块暂时不继续深入,标记一下有机会再说 ---- 条件式属性访问 Js是非常灵活的语言,null或undefined是我觉得最灵性的设定。...,应该这么写 if(res&&res.code===1){ //do something success } 对于专注于偷懒的程序员,这是个相当不错的特性 ---- 条件式调用 众所周知,js
console.log(String.raw`Hello\nworld`); A: Hello world!...B: Hello world C: Hello\nworld D: Hello\n world 答案: C String.raw函数是用来获取一个模板字符串的原始字符串的,它返回一个字符串,其中忽略了转义符...但反斜杠可能造成问题,因为你可能会遇到下面这种类似情况: const path = `C:\Documents\Projects\table.html` String.raw`${path}` 这将导致...: "C:DocumentsProjects able.html" 直接使用String.raw String.raw`C:\Documents\Projects\table.html` 它会忽略转义字符并打印
-- 加载Traceur编译器 --><script src="http://google.github.io/traceur-compiler/src/bootstrap.<em>js</em>" type="text...<em>String.raw</em>() ---- 模板字符串可以是原始的: ES6还为原生的String对象,提供了一个raw方法。...若使用<em>String.raw</em> 作为模板字符串的前缀,则模板字符串可以是原始(raw)的。...反斜线也不再是特殊字符,\n 也不会被解释成换行符: let raw = <em>String.raw</em>`Not a newline: \n`; document.write(raw === 'Not a newline
如果被拷贝的对象内部又有对象的话,拷贝的只是这个对象的引用 ~~~js const original = { prop: {} }; const clone = Object.assign({}, original...而带标签的模板文字是指在模板文字之前放上一个函数调用: String.raw`\u{4B}` '\u{4B}' 这里String.raw被称为tag function,我们看下raw的定义: raw(template...: TemplateStringsArray, ...substitutions: any[]): string; 上面的代码还可以改写为: String.raw`\u004B` '\u004B' \u
triggered here */ sp.SendKeys("{F2}"); } else { sp.CreateTimer( "test", duration, -1, String.raw...currentMousePoint.Y, "getPosition"); var mousePoint = currentMousePoint.X + "," + currentMousePoint.Y; var code = String.raw...else { sp.DeleteAllTimers(); sp.CreateTimer( "test", duration, -1, String.raw
/sum.js'; console.log(sum(1, 2)); // sum.js console.log('running sum.js'); export const sum = (a, b)...=> a + b; A: running index.js, running sum.js, 3 B: running sum.js, running index.js, 3 C: running sum.js..., 3, running index.js D: running index.js, undefined, running sum.js 答案: B import命令是编译阶段执行的,在代码运行之前。...console.log(String.raw`Hello\nworld`); A: Helloworld!...: "C:DocumentsProjects able.html" 直接使用 String.raw String.raw`C:\Documents\Projects\table.html` 它会忽略转义字符并打印
我们可以使用String.raw来获取原始字符串,代码如下: let s = String.raw `xy\n${ 1 + 1 }z`; console.log(s); //output "xy\n2z...如果我们使用自定义的标签函数处理模板字符串,我们可以使用String.raw方法来获取原始字符串,代码如下: let tag = function(strings, ...values) { return
比如String.raw``,可以返回反引号中未经处理的文本。...let len = String.raw`\n`.length;console.log(len); // => 2:一个反斜杠字符和一个字母n虽然不知道实际使用场景,但是多学一点总有好处,保不齐将来可能会用到
---- 如何使用 注意点: `` 反引号来包含内容 ${}来识别储存的内容片段【占位符--支持条件表达式】 标签 + 反引号内容会触发高级函数的定义 tag`` --- 触发模板字符串函数定义 String.raw...tfasdfjl ${ c % a } *2` //return_value的结果是: /* strings是:得到的结果值是:, ,我分割, fasdfjl , *2 value是:6,0 */ String.raw...tfasdfjl 0 *2" */复制代码 函数高级形式内,两个传入返回的均为数组; 第一个参数值为嵌套数组:eg :[a,b,c,raw obj arr] : 最后一个下标值为字符串的原始数据构成的数组对象;String.raw
我们可以使用String.raw来获取原始字符串,代码如下: let s = String.raw `xy\n${ 1 + 1 }z`; console.log(s); //output "xy\n2z...如果我们使用自定义的标签函数处理模板字符串,我们可以使用String.raw方法来获取,代码如下: let tag = function(strings, ...values) { return strings.raw
模板字符串中使用原始字符串 String.raw() 是一个模板字符串的标签函数,用来获取一个模板字符串的原始字面量值 let name = 'ligang' console.log(`my name...is \n ${name}`) // my name is // ligang String.raw`my name is \n ${name}` // "my name is \n ligang..." String.raw({raw: "test"}, 0, 1, 2) // "t0e1s2t" 注意:在Chrome下输出有差异~~~ 改进的数组功能 填充数组 Array.from(arrayLIke
2、表单输入项的字符串赋值给变量时也无需转义 假设页面中存在输入框 ,在输入框中输入字符 \w+\.ke\.qq\.com,则通过 JS 获取到的值可以直接传入 RegExp...3、JS 代码中的转义处理 另外一种可能用到 RegExp string 参数的场景是:基于 JS 逻辑,动态创建正则表达式。例如正则表达式 /\w{3}/ 中的数字 3,是通过某个变量来传递的。...为了解决模板字符串的解析和转义问题,ES6 模板字面量中引入了反引号(`)和 tag function(知名「CSS in JS」 库 styled-components 中大量使用了这种语法)。...这里的场景就可以写成十分类似 Python 的风格,当需要转义的内容比较多时,能保持较好的正则表达式语义: const r = String.raw let n = 3 new RegExp(r`\w{...回过头来看,JS 正则表达式构造器的参数设计问题,其实不是 RegExp 引起的,而是 JavaScript String 的设计缺陷:单引号和双引号非但没有参考 PHP/Shell 之类的设计,反而给前端社区留下
String.raw() String.raw()方法,当作模板字符串的处理函数,返回已替换变量或执行函数后的字符串。若模板字符串中存在一个斜杠,则会被转义成两个斜杠。若本身为两个斜杠,则不做处理。...let s1 = 'Clear', s2 = 'love' String.raw`${ s1 + s2 }` // 'Clearlove' 作为函数调用较少出现,就不多做介绍。
String.raw() ES6 为原生 String 对象,提供了一个raw方法。用来充当模板字符串的处理函数,返回一个斜杠都被转义的字符串,对应于替换变量后的模板字符串。...如下: String.raw`Hi\n${2+3}!`; // 返回 "Hi\\n5!" String.raw`Hi\u000A!`; // 返回 "Hi\\u000A!" 14.
logs "string text line 1 \n string text line 2" , // including the two characters '\' and 'n' 另外,使用 String.raw...var str = String.raw`Hi\n${2+3}!`; // "Hi\n5!"
Js中String对象 String全局对象是一个用于字符串或一个字符序列的构造函数。...事实上,Js中基本数据类型的值不可变,基本类型的值一旦创建就不能被改变,所有操作只能返回一个新的值而不能去改变旧的值。...var s = "ABC"; var it = s[Symbol.iterator](); console.log(it.next().value); // A String.raw() String.raw...(callSite, ...substitutions) String.raw() 是一个模板字符串的标签函数,是用来获取一个模板字符串的原始字符串的,例如\n转义字符不会被转义,参数callSite...var raw = String.raw `\n`; console.log(raw); // \n console.log(raw.length); // 2 每日一题 https://github.com
领取专属 10元无门槛券
手把手带您无忧上云