为什么我会超出最大调用堆栈数?

时间:2019-03-06 15:22:23

标签: javascript html json

我不知道为什么我得到的调用堆栈超出了最大值,我也不知道它来自哪里。

感谢您的帮助!

函数attributeMissions:

function attributeMissions(missions) {

var start;
var date = new Date();
var length;
var position = 2.1;
var start;

if (date.getMinutes() > 480 && date.getMinutes() < 1320) {
    var start = date.getMinutes();
}

if (locationMassage = !undefined) {
    length = date.getMinutes() - start;
}

var x, y;

位置坐标:

var locationMassage = {
    1: {
        x: 2.101,
        y: -0.3
    },
    2: {
        x: 2.102,
        y: -0.3
    },
    3: {
        x: 2.103,
        y: -0.3
    },
    4: {
        x: 2.104,
        y: -0.3
    },
    5: {
        x: 2.105,
        y: -0.3
    },
    6: {
        x: 2.106,
        y: -0.3
    },
    7: {
        x: 2.107,
        y: -0.3
    },
    8: {
        x: 2.108,
        y: -0.3
    },
    9: {
        x: 2.106,
        y: -0.3
    },
    10: {
        x: 2.26,
        y: -0.3
    }


};

函数setInterval在5分钟后执行该函数:

setInterval(attributeMissions(start, length, 300000));

我想返回locationMassage的位置:

我认为我写的不正确

return {
    locationMassage: 1
};

}

1 个答案:

答案 0 :(得分:2)

setInterval(attributeMissions(start, length, 300000));

此代码立即调用attributeMissions,并将其传递给start,length和300000。attributeMissions返回的任何内容都将传递到setInterval中。因此,如果这行代码位于attributeMissions中(从您提供的示例中不清楚),那么attributeMissions将调用attributeMissions,后者将调用attributeMissions,依此类推,从而导致堆栈溢出。

您不想立即调用attributeMissions,而是想将一个函数传递给setInterval,如下所示:

setInterval(() => attributeMissions(start, length), 300000);