Javascript函数循环变量
var i=99; 虽然是真的 { 功能线垫片 { 返回文件中的i++行代码+i++him+i-1+行代码+!; } console.loglinesJohn删除一个,清除所有内容;; i-=1; 如果i==0 { 打破 }Javascript函数循环变量,javascript,function,loops,Javascript,Function,Loops,var i=99; 虽然是真的 { 功能线垫片 { 返回文件中的i++行代码+i++him+i-1+行代码+!; } console.loglinesJohn删除一个,清除所有内容;; i-=1; 如果i==0 { 打破 } } 首先,我建议您使用正确的迭代结构。如何决定哪一个适合您: 如果您知道将要进行的迭代次数,我更喜欢使用for循环。 若你们有一个数组作为输入,你们可以使用foreach迭代器,但我更喜欢for循环。 如果必须迭代直到满足一个条件,那么while是正确的结构。 最后,若你们
} 首先,我建议您使用正确的迭代结构。如何决定哪一个适合您: 如果您知道将要进行的迭代次数,我更喜欢使用for循环。 若你们有一个数组作为输入,你们可以使用foreach迭代器,但我更喜欢for循环。 如果必须迭代直到满足一个条件,那么while是正确的结构。 最后,若你们需要做一件事,然后迭代,那个么结构就是你们需要的。 在本例中,您已经知道要进行多少次迭代,因此我将使用for循环:
for (let i = 0; i < 99; i++) {
console.log(i + " " + "lines of code in the file " + i + " " + him + i-1 + "lines of code" + "!");
}
另外,请记住,在您的示例中,您要传递函数声明行99次,应该避免在循环结构之外声明函数
还有一件事,在实际的代码中,您应该始终尽可能保持代码的可读性,这是一种难以理解的任务。
var i=99;
功能线垫片
{
返回文件中的i+行代码+i++him+-i+行代码!;
}
虽然是真的
{
console.loglinesJohn删除一个,清除所有内容;
如果!我
{
打破
}
} 问题是您正在构建一个字符串,但尝试从字符串中减去一个。与加法不同,减法必须产生一个数字,但string-1不是一个数字 修复结构的一种方法是将i-1放在括号中,这样可以像下面这样单独计算:
i + " " + "lines of code in the file " + i + " " + him + (i-1) + "lines of code" + "!"
但更好的语法是使用反勾号以更可读的方式格式化它。试试这个:
`${i} lines of code in the file ${i} ${him+(i-1)} lines of code!`
我不太确定这句话的结构,但这就是你想做的。在${}段中使用带计算的反勾号比添加字符串更容易阅读和理解
为了进一步解释出错的原因,请尝试运行以下代码段:
让i=99
让x=你好
console.logi-1,i-1//工作,因为i是一个数字
console.logx-1,x-1//n从字符串中减去
console.logx+i-1,x+i-1//仍然为NaN,因为x+i是字符串
console.logx+i-1,x+i-1//可以工作,因为i-1被添加到string中。我想你应该把他+i-1放在括号中。+him+i-1+->+him+i-1+@VLAZ可能更好。我不明白代码应该做什么。isNaNstring-1===true所有直到-都被强制为字符串并连接。@FlatAssembler它应该打印字符串him,然后在后面跟着数字I-1,例如,对于I=9,它应该打印8。但是由于没有括号,整个表达式在文件+i++him+i中计算为i++代码行,它生成一个字符串->减去1,它生成NaN:这是一个从字符串中减去的数字->连接代码行+!