node.js变量范围

时间:2012-11-25 18:59:48

标签: javascript node.js

我有以下导出对象:

module.exports = {
    value: 0,

    startTimer: function() {
        setInterval(function() {
            value++;
        }, 1000);
    }
}

如何从该setInterval函数访问value? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

您可以指定值的完整路径:

module.exports = {
    value: 0,

    startTimer: function() {
        setInterval(function() {
            module.exports.value++;
        }, 1000);
    }
}

或者,如果将setTimeout调用的函数绑定到this,则可以使用this

module.exports = {
    value: 0,

    startTimer: function() {
        setInterval(function() {
            this.value++;
        }.bind(this), 1000);
    }
}

这类似于这样的代码,您将不时看到:

module.exports = {
    value: 0,

    startTimer: function() {
        var self = this;
        setInterval(function() {
            self.value++;
        }, 1000);
    }
}