下面的代码片段用于Mozilla(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)以解释Tagged Template literal
,请帮我理解下面的函数正在做什么,我无法获得该函数的实际流程,因为他们已经使用了keys.foreach
和当我在Chrome检查,钥匙是一个功能,所以无法理解了解ES6标记的模板文字
function template(strings, ...keys) {
return (function(...values) {
var dict = values[values.length - 1] || {};
var result = [strings[0]];
keys.forEach(function(key, i) {
var value = Number.isInteger(key) ? values[key] : dict[key];
result.push(value, strings[i + 1]);
});
return result.join('');
});
}
var t1Closure = template`${0}${1}${0}!`;
t1Closure('Y', 'A'); // "YAY!"
var t2Closure = template`${0} ${'foo'}!`;
t2Closure('Hello', {foo: 'World'}); // "Hello World!"
“*当我在Chrome检查,按键是功能*” - 没有。 'keys'是一个数组。 – Bergi
是的,键是一个数组,但不知何故,当我问的问题,我检查了键,当调试器是在forEach里面,那时你不能访问键数组,如果你键入键,你会在控制台得到一个功能 –
嗯只是写一个标准的'for(let i = 0; i
Bergi