for循环似乎运行正常但无法更新元素变量。 我的意图是:
<h6>Q1</h6>
<h6>Q1</h6>
<h6>Q1</h6>
相反,实际结果是:
function results () {
var listResults = '';
var i=0;
const element = `
<h6>Q${i+1}</h6>
`;
for(x=0; x < 3; x++) {
listResults += element;
i++;
}
return listResults;
}
console.log(results())
yum install python34-devel
&#13;
答案 0 :(得分:1)
一些问题。主要是,评估element
时i
为0
,因此element
始终返回<h6>Q1</h6>
。
您可以将模板文字直接附加到输出,如下所示:
function results () {
var listResults = '';
for(x=0; x < 3; x++) {
listResults += `<h6>Q${x+1}</h6>\n`;
}
return listResults;
}
console.log(results())
答案 1 :(得分:1)
解析表达式后立即评估模板。这样的事情可以奏效:
let listResults = [];
const element = i => `<h6>Q${i+1}</h6>`;
for(x=0; x < 3; x++) {
listResults += element(x);
}
答案 2 :(得分:0)
主要问题是,当element
等于i
时,0
会被分配一次。它永远不会更新(尽管每个循环都会i
递增)。
此外,使用更现代的方法(如.map
)会产生更可读的结果:
const results = () => [1, 2, 3]
.map(i => `
<h6>Q${i}</h6>
`)
.join('');
console.log(results());
答案 3 :(得分:0)
你有这个问题只是因为你每次撤销功能时都声明我变量,实际上每次你将它设置为0并继续。 所以,“i”变量必须声明(并在声明之前)函数(不在其中) 每次调用函数时,它的值都会加一个。
var i=0;
function results () {
var listResults = '';
const element = `
<h6>Q${i+1}</h6>
`;
for(x=0; x < 3; x++) {
listResults += element;
i++;
}
return listResults;
}
console.log(results())
答案 4 :(得分:0)
一些ES6:
const results = _ => Array.from({length:3}, i => `<h6>Q${i+1}</h6>`).join("\n");
答案 5 :(得分:0)
尝试使用eval:
var element = "<h6>Q${i}</h6>";
var results = [1, 2, 3].map(function (i) {
return eval('`'+element+'`');
});
console.log(results);
&#13;