Javascript 为什么变量没有在for循环中更新?JS
for循环似乎运行正常,但无法更新元素变量。 我的意图是:Javascript 为什么变量没有在for循环中更新?JS,javascript,template-literals,Javascript,Template Literals,for循环似乎运行正常,但无法更新元素变量。 我的意图是: <h6>Q1</h6> <h6>Q2</h6> <h6>Q3</h6> Q1 问题2 第三季度 相反,实际结果是: <h6>Q1</h6> <h6>Q1</h6> <h6>Q1</h6> Q1 Q1 Q1 函数结果(){ var listResults=''; var i=0; 常量元
<h6>Q1</h6>
<h6>Q2</h6>
<h6>Q3</h6>
Q1
问题2
第三季度
相反,实际结果是:
<h6>Q1</h6>
<h6>Q1</h6>
<h6>Q1</h6>
Q1
Q1
Q1
函数结果(){
var listResults='';
var i=0;
常量元素=`
Q${i+1}
`;
对于(x=0;x<3;x++){
listResults+=元素;
i++;
}
返回列表结果;
}
console.log(results())
一些问题。主要是,当计算元素
时i
为0
所以元素
总是返回Q1
您可以将模板文字直接附加到输出,如下所示:
函数结果(){
var listResults='';
对于(x=0;x<3;x++){
listResults+=`Q${x+1}\n`;
}
返回列表结果;
}
console.log(results())
一些问题。主要是,当计算元素
时i
为0
所以元素
总是返回Q1
您可以将模板文字直接附加到输出,如下所示:
函数结果(){
var listResults='';
对于(x=0;x<3;x++){
listResults+=`Q${x+1}\n`;
}
返回列表结果;
}
console.log(results())
主要问题是当i
等于0
时,元素
被赋值一次。除此之外,它永远不会更新(尽管i
随着每个循环而递增)
此外,使用更现代的方法,如.map
,可以获得更具可读性的结果:
const results=()=>[1,2,3]
.map(i=>`
Q${i}
`)
.加入(“”);
log(results())代码>主要问题是当i
等于0
时,元素
分配一次。除此之外,它永远不会更新(尽管i
随着每个循环而递增)
此外,使用更现代的方法,如.map
,可以获得更具可读性的结果:
const results=()=>[1,2,3]
.map(i=>`
Q${i}
`)
.加入(“”);
log(results())代码>解析表达式后立即计算模板。类似这样的方法可能会奏效:
让listResults=[];
常量元素=i=>`Q${i+1}`;
对于(x=0;x<3;x++){
listResults+=元素(x);
}
解析表达式后立即计算模板。类似这样的方法可能会奏效:
让listResults=[];
常量元素=i=>`Q${i+1}`;
对于(x=0;x<3;x++){
listResults+=元素(x);
}
出现此问题的唯一原因是,每次撤销函数时,以及实际上每次将其设置为0并继续时,都要声明i变量。
因此,“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())
var i=0;
函数结果(){
var listResults='';
常量元素=`
Q${i+1}
`;
对于(x=0;x<3;x++){
listResults+=元素;
i++;
}
返回列表结果;
}
console.log(results())
出现此问题的唯一原因是,每次撤销函数时,以及实际上每次将其设置为0并继续时,都要声明i变量。
因此,“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())
var i=0;
函数结果(){
var listResults='';
常量元素=`
Q${i+1}
`;
对于(x=0;x<3;x++){
listResults+=元素;
i++;
}
返回列表结果;
}
console.log(results())
一些ES6:
const results = _ => Array.from({length:3}, i => `<h6>Q${i+1}</h6>`).join("\n");
constresults=\u=>Array.from({length:3},i=>`Q${i+1}`)。join(“\n”);
一些ES6:
const results = _ => Array.from({length:3}, i => `<h6>Q${i+1}</h6>`).join("\n");
constresults=\u=>Array.from({length:3},i=>`Q${i+1}`)。join(“\n”);
尝试使用eval:
var element=“Q${i}”;
var results=[1,2,3].map(函数(i){
返回eval('`+element+'`');
});
控制台日志(结果)代码>使用eval尝试此操作:
var element=“Q${i}”;
var results=[1,2,3].map(函数(i){
返回eval('`+element+'`');
});
控制台日志(结果)因为在计算模板文本时,i
的值必须为0
。如果要得到不同的结果,必须在循环中定义模板文字。可能需要在for循环中移动const元素=…
。因为在计算模板文字时i
的值必须为0
。如果你想得到不同的结果,你必须在循环中定义模板文字。你可能想在for循环中移动const-element=…
。我认为在循环中声明变量是不明智的。事实并非如此。另一件不明智的事情是重新分配常量
。我认为在循环中声明变量是不明智的。事实并非如此。另一件不明智的事情是重新分配常量
。在这种情况下,不需要使用eval
。请不要推广使用eval
。在这种情况下不需要使用eval
。请不要推广使用eval
。