关于String.raw()的问题
xiekaifei opened this issue · comments
谢凯飞 commented
阮老师,你好。
最近在看您的ES6书籍,发现一个问题。
在第5章:字符串的新增方法中,描述String.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;
}
Ruan YiFeng commented
教程里的实现只是一个原理的演示,假设字符串的长度总是比 values 数组大1
。