js模版字符串-标签模版

本文介绍了JavaScript中模板字符串的高级形式——标签函数,它允许开发者定义自定义函数处理模板字符串中的内容,如字符串拼接、对象属性提取等。通过示例展示了如何使用标签函数进行字符串操作和对象解析。
摘要由CSDN通过智能技术生成

模版字符串

js模版字符串使用``来创建模版字符串字面量,例如

const name = "yu"
console.log(`hello ${name}`)

很多人都知道。但是其实我们可以定义标签函数来自定义返回结果。

标签函数

带标签的模板是模板字面量的一种更高级的形式,它允许你使用函数解析模板字面量。标签函数的第一个参数包含一个字符串数组,其余的参数与表达式相关。你可以用标签函数对这些参数执行任何操作,并返回被操作过的字符串(或者,也可返回完全不同的内容,见下面的示例)。用作标签的函数名没有限制。

function template(str_arr,...arg_expression){
    console.log(str_arr,'字符串数组')
    console.log(arg_expression,'参数表达式')
}
const user_name = "fancy_fish"
const user_password = "password"
const test_tag_str = template`<div>用户名:${user_name} 密码:${user_password}<div>`
console.log(test_tag_str)

在这里插入图片描述
可以看到第一个参数为字符串数组。该字符串数组会被我们使用的末班字符串字面量分割。其余参数为模版字符串表达式。
我们可以通过这个自定义字符串返回结果。示例如下

function template(str_arr, ...arg_expression) {
    const res = str_arr.reduce((pre, cur, index) => {
        return pre + cur + (arg_expression[index] ? arg_expression[index] : "")
    }, '')
    document.body.innerHTML = res
    return res
    
}
const user_name = "fancy_fish"
const user_password = "password"
const test_tag_str = template`用户名:${user_name}密码:${user_password}`
console.log(test_tag_str)

在这里插入图片描述

示例二:解析对象

function template(_, ...arg_expression) {
    const obj = arg_expression[0];
    let res = ''
    for (let key in obj) {
        if (typeof obj[key] !== 'object') {
            res += obj.description[key]+ ':\t' + obj[key] + '\t'
        }
    }
    document.body.innerHTML = res
    return res
    
}
const user_info = {
    name: "fancy_fish",
    age: 18,
    description: {
        name: '姓名',
        age:'年龄'
    }
}
const test_tag_str = template`${user_info}`
console.log(test_tag_str)

在这里插入图片描述

总结

  1. 我们可以给模版字符串定义标签,标签名等于函数名
  2. 函数接受多个参数,第一个参数为被模版字符串表达式${}分割的原始字符串,其余参数为模版字符串表达式内部引用的值,函数返回参数是字符串。
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鲤余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值