IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> ES6 特性: 模版字符串 Template String -> 正文阅读

[JavaScript知识库]ES6 特性: 模版字符串 Template String

ES6 特性: 模版字符串 Template String

正文

1. 特性:字符串拼接

原来使用 + 号拼接字符串 => 改为使用反引号与 ${} 表达式组合字符串

  1. ES5 以前
const greeting = 'Hello ' + name + '!';
  1. ES6 模版字符串
const greeting = `Hello ${name}!`

2. 特性:字符串模版作为函数

除了作为字符串之外,还可以将模版字符串接在函数后面,利用字符串模版作为函数的参数

  • 语法
    • 第一个参数为字符串字面量的类数组对象,还有一个 raw 属性保存所有字符串的原始字符
    • 后续参数为不定长的表达式,使用 ... 扩展运算符变为表达式数组
function fn(templates, ...expressions) {/* ... */}
fn`blablabla`
  • 基础用法:将所有表达式代表的字符串转为大写
const createGreeting = (name) => `Hello ${name}!`;
console.log(createGreeting('superfree'));

const createGreeting2 = ((strs, nameExp) => {
  // strs[0] === 'Hello '
  // strs[1] === '!'
  // nameExp === (name) => name.toUpperCase()
  return (name) => `${strs[0]}${nameExp(name)}${strs[1]}`;
})`Hello ${(name) => name.toUpperCase()}!`;

console.log(createGreeting2('superfree'));

3. 应用:字符串表达式转对象

对于第二种的字符串表达式作为函数参数不仅能返回字符串,实际上能返回任意东西

  • 示例:将字符串解析为对象
const createObj = (strs, ...expressions) => {
  console.log('strs', strs);
  console.log('expressions', expressions);
  const obj = {};
  let i = expressions.length;
  while (i-- > 0) {
    obj[strs[i]] = expressions[i];
  }
  return obj;
};

const name = 'superfree';
const age = 21;
const obj = createObj`name${name}age${age}`;
console.log('obj', obj);

4. 应用:生成内联 CSS 样式(style 样式)

  • 应用2: 对象映射为 CSS 内联样式
const createStyleFactory = (strs, ...expressions) => {
  return (props) => {
    let i = strs.length - 1;
    let s = strs[i];
    while (i-- > 0) {
      s = strs[i] + expressions[i](props) + s;
    }
    return s;
  };
};

const createStyle = createStyleFactory`
  width: ${(props) => props.width};
  height: ${(props) => props.height};
  background: ${(props) => props.background || '#000'};
`;

console.log(createStyle({ width: 111, height: 222 }));

document
  .querySelector('.block')
  .setAttribute('style', createStyle({ width: '200px', height: '40px', background: '#f0f0f0' }));

其他资源

参考连接

TitleLink
Template literals - MDNhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
ES6 JavaScript 模板字符串與標籤模板https://blog.csdn.net/weixin_46803507/article/details/106579538
三种CSS样式-内联、嵌入、外部https://www.cnblogs.com/dyfblogs/p/11391655.html

完整代码示例

https://github.com/superfreeeee/Blog-code/tree/main/front_end/es6/es6_template_string

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 13:45:45  更:2021-10-07 13:45:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 2:02:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码