JavaScript中模板字面量定义标签函数

标签函数本身是常规函数,通过前缀到模板字面量来应用自定义行为

通过实例来解读上面这句话:

const a = `Harry`;
const b = `Potter`;
const c = `Hello`; //定义三个字符串变量

function Tag(strings, x, y, z) {

//标签函数接收的参数个数取决于引用函数时后面跟的模板字面量中的插值个数,参数个数为(插值个数 + 1). 本例中参数个数即取决于下文中`${a}${b}, ${c}!`中插值个数,这里面有${a}, ${b}, ${c}三个插值,那么这个标签函数的参数个数即为3 + 1 = 4个. 标签函数中第一个参数都为strings, 即为插值表达式中各插值之间分隔符组成的数组,详见下述
    console.log(strings);

//输出[ '', '', ', ', '!' ] 承上,[ '', '', ', ', '!' ] 为表达式`${a}${b}, ${c}!`中各插值之间分隔符组成的数组,我来将各个插值之间的间隔符标注出来以便于理解:`''${a}''${b}', '${c}'!'`. 请注意,第一个插值之前如果没有符号的话,数组中会将第一个间隔符赋值为空值,即为'',两个插值之间如果没有分隔符号,间隔符也会被赋值为数组中的一个空值''.如果分隔符里面有空格,也会一起体现,如数组中的第三个分隔符为', ' 可见逗号后面有一个空格
    console.log(x); 

//输出 Harry. x为标签函数接收到的模板字面量`${a}${b}, ${c}!`中的顺序数第一个插值,即为${a}, 也就是`Harry`
    console.log(y);

//输出 Hello. y为标签函数接收到的模板字面量`${a}${b}, ${c}!`中的顺序数第二个插值,即为${b}, 也就是`Potter`
    console.log(z);

//输出 Hello. z为标签函数接收到的模板字面量`${a}${b}, ${c}!`中的顺序数第三个插值,即为${c}, 也就是`Hello`

    return `${c} ${a}, how are you!`;
//标签函数利用读取到的插值,自定义重组并输出新的字面量
}

const res = Tag`${a}${b}, ${c}!`;
console.log(res); //输出 Hello Harry, how are you! 
//标签函数利用从`${a}${b}, ${c}!`中读取到的插值,自定义重组并输出新的字面量

下一篇会讲参数数量可变的标签函数如何定义,敬请关注.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值