разница возникает из-за того, что вы увеличиваете i
в цикле while:
res += literals[i++]
для вашей первой итерации, это вернет literals[0]
, но будет сравнивать 1 < arguments.length
и добавитьarguments[1]
.
однако в цикле for вы увеличиваете с помощью ++i
:
for ( let i = 0; i < literals.length; ++i) {
для вашей первой итерации, это вернет literals[**1**]
и будет сравниваться1 < arguments.length
и добавьте arguments[1]
.
, чтобы исправить цикл for, измените на i++
и добавьте + 1
, где необходимо:
const total = 30
function figureTax(literals) {
let res = ''
for ( let i = 0; i < literals.length; i++) {
res += literals[i]
if ((i + 1) < arguments.length) {
res += arguments[i + 1]
}
}
return res
}
const res = figureTax`Your tax is (${ total * 0.15 } with tax!)`
console.log(res)
//Your tax is (4.5 with tax!)
для получения дополнительной информации см. В чем разница между ++ i и i ++?