Javascript 在匿名回调中使用函数参数返回null/NaN
我正在做一些Mocha测试,上面的代码中出现了一个奇怪的错误 当涉及断言时,Javascript 在匿名回调中使用函数参数返回null/NaN,javascript,callback,closures,mocha.js,Javascript,Callback,Closures,Mocha.js,我正在做一些Mocha测试,上面的代码中出现了一个奇怪的错误 当涉及断言时,noToExpect是NaN,而不管我传递了什么数字(尽管上面只是一个示例) 我假设由于使用了回调,noToExpect就在闭包中(尽管我对这个概念还不熟悉) 有没有一种方法可以在闭包中使用传递的参数?我只是缺少一些简单的东西吗 Edit:我在it的第一行添加了一个noToExpect的日志,它记录了200个,因此这个数字正确地进入了it中。noToExpect应该可以在getTotalSessions中的任何一个嵌套匿
noToExpect
是NaN
,而不管我传递了什么数字(尽管上面只是一个示例)
我假设由于使用了回调,noToExpect
就在闭包中(尽管我对这个概念还不熟悉)
有没有一种方法可以在闭包中使用传递的参数?我只是缺少一些简单的东西吗
Edit:我在
it
的第一行添加了一个noToExpect
的日志,它记录了200个,因此这个数字正确地进入了it
中。noToExpect
应该可以在getTotalSessions中的任何一个嵌套匿名函数中使用,因为闭包在Java中是如何工作的脚本。我希望你有一些其他类型的错误,让你觉得你没有访问它的权限
一些可能性包括:
听起来好像你已经明白了,但这里有一个jsFiddle,它展示了如果其他东西没有弄糟的话,你的一般概念是有效的:我不认为函数后面的括号(done){是在实际代码中吗?还是真的?我在
it
的第一行添加了一个noToExpect
的日志,它记录了200个。没有拼写错误,因为这是两者之间唯一的交互。实际上,你是对的。这是我代码之外的东西。
getTotalSessions(200);
function getTotalSessions(noToExpect){
it("Tests some stuff", function(done){
this.timeout(0);
setTimeout(function(){
checkSessions("day", function(total){
assert.strictEqual(total, noToExpect, "Session number mismatch!\n\nReturned: " + total + "\nExpected: " + noToExpect + "\n");
done();
});
}, 3000);
});
}