在匿名回调中使用函数参数返回null / NaN

时间:2013-10-03 00:11:15

标签: javascript callback closures mocha

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

我正在做一些Mocha测试,我在上面的代码中遇到了一个奇怪的错误;​​

无论我传递的是什么数字,

noToExpect在声明时都是NaN(尽管上面只是一个例子。

由于使用了回调,我假设noToExpect只是在闭包内(虽然我对这个概念不熟悉)。

有没有办法可以在闭包中使用传递的参数?我只是缺少一些简单的东西吗?

修改:我在noToExpect内的第一行添加了it的日志,并记录了200,因此该号码已进入it正确。

1 个答案:

答案 0 :(得分:1)

noToExpect应该可以在getTotalSessions中的任何嵌套匿名函数中使用,因为闭包在Javascript中的工作方式。我希望你有一些其他类型的错误让你误以为你无法访问它。

一些可能性包括:

  1. 您还有一些其他代码错误正在改变您认为正在发生的执行路径。
  2. 你在某个地方有一个变量名拼写错误。
  3. 其他代码正在更改或重新定义或覆盖noToExpect。
  4. 这听起来像是你想出来的,但是这里有一个jsFiddle,它显示了你可以使用的一般概念,如果其他东西没有搞砸了它:http://jsfiddle.net/jfriend00/nY6WC/

相关问题