《ES6标准入门》—【字符串、数值扩展】

《ES6标准入门》—【字符串、数值扩展】

xiaolu
2022-02-16 / 0 评论 / 15 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年02月18日,已超过130天没有更新,若内容或图片失效,请留言反馈。

字符的 unicode 表示法:

我觉得这个东西用的不多,因此用折叠面板把它包裹起来,用到的时候再来打开查看:

字符串新增方法

此外,这三个方法可支持第二个参数,用以设置搜索的 起始位置

模板字符串

有了模板字符串,不再需要 + 号来连接字符串和变量,而是将变量放在 ${} 中。这个特性已经非常熟悉了,示例如下:

let str = "old";
let str_1 = `how ${str} are you`;
console.log(str_1);
// how old are you

对于 ${} 这个神奇的语法,花括号内还可以填入表达式,写点简单的 html 的东西简直不要太爽:

$('#result').append(
`There are <b>$(basket.count)</b> items
in your basket, <em>$(basket.onSale)</em>
are on sale!`)

此外,模板字符串可以嵌套模板字符串,还有一个叫做标签模板的功能。下面的代码就是标签模板的示例,我来仔细阐述一下含义:

首先它的语法格式是:functionName``,前面是已经定义好的函数的名字,然后紧跟两个重音符,它实际上是相对于 functionName(params) 的变体。那么这个参数怎么传呢?打印 arguments 的结果如下:

第一个参数是用 ${} 分割成的字符串数组,这些字符串都是静态的不变的
第二个及后面的诸多参数,都是 ${} 括号内的变量

let total = 30;
let msg = passthru`The total is ${total} (${total*1.05} with tax`;
function passthru(literals) {
  console.log(arguments);
  let result = '';
  let i = 0;
  while (i < literals.length) {
    result += literals[i++];
    if (i < literals.length) {
      result += arguments[i]
    }
  }
  return result;
}

msg // "The total is 30 (31.5 with tax)"

弄懂了这些,上面的代码就不难理解了,每次从静态字符串数组和动态变量组 (arguments 是类似数组,却不是数组,只不过具有 iterable 接口而已) 各取一个然后拼接在一起,最后把结果返回。



数值的扩展

0

评论 (0)

取消