ruanyf / es6tutorial

《ECMAScript 6入门》是一本开源的 JavaScript 语言教程,全面介绍 ECMAScript 6 新增的语法特性。

Home Page:http://es6.ruanyifeng.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于String.raw()的问题

xiekaifei opened this issue · comments

阮老师,你好。
最近在看您的ES6书籍,发现一个问题。
第5章:字符串的新增方法中,描述String.raw()作为函数的代码实现方法时,列出的实现代码在执行的时候和原生的方法输出的结果有所不同。

raw

传入参数String.raw({ raw: 'test' }, 0, 1, 2, 3),原生方法输出t0e1s2t,文章里代码输出t0e1s2t3undefined
所以实现代码是不是应该改为下面这样:

String.raw = function (strings, ...values) {
  let output = '';
  let index;
  let length = strings.raw.length > 0 ? strings.raw.length - 1 : 0;
  for (index = 0; index < length; index++) {
    let text = values[index] !== undefined ? values[index] : '';
    output += strings.raw[index] + text;
  }

  output += strings.raw[index]
  return output;
}

教程里的实现只是一个原理的演示,假设字符串的长度总是比 values 数组大1