以下代码片段用于 Mozilla ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals ) 来解释Tagged Template literal
,请帮助我了解以下函数在做什么,我无法得到该功能的实际流程,因为他们已经使用keys.foreach
并且当我在 Chrome 中检查时,键是一个功能,所以无法理解
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!"