为什么我的函数返回这个奇怪的输出?
Why is my function returning this strange output?
我正在尝试编写一个函数,它接受一个整数作为输入,并确定在第 N 次迭代中围绕中心点的五角形中存在多少个点。我能够解决这个挑战,但是在测试我的代码时,我从 google chrome 控制台收到了一个奇怪的输出,我不明白为什么。
这是不断给我错误的原始代码(下图 link 中显示的错误)
function sides(num) {
total = 1;
for (let i = 2; i <= num; i++) {
top = 1;
sides = (i - 1) * 4;
bottom = i - 2;
total += top + sides + bottom;
}
return total;
}
然后我把它改成了这个,效果很好:
function pentagon(num) {
total = 1;
for (let i = 2; i <= num; i++) {
answer = (((i - 1) * 4) + 1) + (i - 2);
total += answer
}
return total;
}
但我不明白它们为什么不同。我所做的只是将顶部、底部和侧面的数学运算合并为一行,称为答案。我不明白为什么第一个函数起作用而第二个函数不起作用,而且我也不明白第一个函数给我的输出。如果有人能向我解释这两件事,我将不胜感激,谢谢。
你应该使用var、const或let关键字,否则你的变量会乱具有全局设置的变量(例如 top)。
function sides(num) {
let total = 1;
for (let i = 2; i <= num; i++) {
const top = 1;
const sides = (i - 1) * 4;
const bottom = i - 2;
total += top + sides + bottom;
}
return total;
}
编辑:正如@Matthias 指出的那样:
window.top (MDN) 指的是 top-most window(适用于嵌套的 iframe)。没有关键字,变量只是设置为 window 的 属性。这是 read-only
我正在尝试编写一个函数,它接受一个整数作为输入,并确定在第 N 次迭代中围绕中心点的五角形中存在多少个点。我能够解决这个挑战,但是在测试我的代码时,我从 google chrome 控制台收到了一个奇怪的输出,我不明白为什么。
这是不断给我错误的原始代码(下图 link 中显示的错误)
function sides(num) {
total = 1;
for (let i = 2; i <= num; i++) {
top = 1;
sides = (i - 1) * 4;
bottom = i - 2;
total += top + sides + bottom;
}
return total;
}
然后我把它改成了这个,效果很好:
function pentagon(num) {
total = 1;
for (let i = 2; i <= num; i++) {
answer = (((i - 1) * 4) + 1) + (i - 2);
total += answer
}
return total;
}
但我不明白它们为什么不同。我所做的只是将顶部、底部和侧面的数学运算合并为一行,称为答案。我不明白为什么第一个函数起作用而第二个函数不起作用,而且我也不明白第一个函数给我的输出。如果有人能向我解释这两件事,我将不胜感激,谢谢。
你应该使用var、const或let关键字,否则你的变量会乱具有全局设置的变量(例如 top)。
function sides(num) {
let total = 1;
for (let i = 2; i <= num; i++) {
const top = 1;
const sides = (i - 1) * 4;
const bottom = i - 2;
total += top + sides + bottom;
}
return total;
}
编辑:正如@Matthias 指出的那样:
window.top (MDN) 指的是 top-most window(适用于嵌套的 iframe)。没有关键字,变量只是设置为 window 的 属性。这是 read-only