Javascript 无法将未定义或null转换为对象

Javascript 无法将未定义或null转换为对象,javascript,node.js,Javascript,Node.js,不确定我在这里哪里出错了: test.js game.js 对于测试,我得到断言错误: AssertionError: expected false to be true 我想我已经在start方法中设置了它,那么为什么我的测试仍然以false失败呢?您已经为模块导出指定了hasStarted的初始值,它没有随着调用start而改变 使用函数而不是变量来检索它,即: module.exports = { start: start, started: function() { r

不确定我在这里哪里出错了:

test.js

game.js

对于测试,我得到断言错误:

AssertionError: expected false to be true

我想我已经在start方法中设置了它,那么为什么我的测试仍然以false失败呢?

您已经为模块导出指定了hasStarted的初始值,它没有随着调用start而改变

使用函数而不是变量来检索它,即:

module.exports = {
    start: start,
    started: function() { return hasStarted; }
};

由于您使用的局部变量是基元类型,因此在调用start方法后它不会反映。js中的基元类型是按值传递的

var hasStarted = {
    isStarted: false
};
var game = {
    start: start,
    started: hasStarted
};

function start() {
    hasStarted.isStarted = true;
};

module.exports = game;
这将工作,你期待

module.exports = {
    start: start,
    started: function() { return hasStarted; }
};
var hasStarted = {
    isStarted: false
};
var game = {
    start: start,
    started: hasStarted
};

function start() {
    hasStarted.isStarted = true;
};

module.exports = game;