为什么我的函数返回此奇怪的输出?

时间:2019-06-02 20:22:28

标签: javascript return google-chrome-console

我正在尝试编写一个函数,该函数接受整数作为输入,并确定在第N次迭代中围绕中心点以五边形形状存在的点数。我能够解决挑战,但是在测试我的代码时,我从google chrome控制台收到了奇怪的输出,我不明白为什么。

这是原始代码,不断给我一个错误(错误显示在下面的图像链接中)

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;
}

但是我不明白为什么他们与众不同。我所做的只是将顶部,底部和侧面的数学运算合并为一条线,称为答案。我不明白为什么第一个函数起作用,而第二个函数却不起作用,而且我也不理解第一个函数给我的输出。如果有人可以向我解释这两件事,我将不胜感激,谢谢。

enter image description here

1 个答案:

答案 0 :(得分:1)

您应该使用 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)指最顶部的窗口(适用于嵌套的iframe)。如果没有关键字,则仅将变量设置为window的属性。而且它是只读的