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


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!nnReturned: " + total + "nExpected: " + noToExpect + "n");
                done();
            });
        }, 3000);
    });
}

我正在做一些摩卡测试,上面的代码中出现了一个奇怪的错误;

noToExpect在断言时NaN,无论我传递什么数字(尽管上面只是一个示例。

我假设noToExpect只是在闭包内,因为使用了回调(尽管我对这个概念很陌生)。

有没有办法在该闭包中使用传递的参数?我只是错过了一些简单的东西吗?

编辑:我在it内的第一行添加了noToExpect日志,它记录了200,因此该数字正确进入it

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

一些可能性包括:

  1. 您有一些其他代码错误正在更改您认为正在发生的事情的执行路径。
  2. 某处的变量名称拼写错误。
  3. 其他代码正在更改或重新定义或覆盖noToExpect。

听起来你已经想通了,但这里有一个jsFiddle,它显示了如果你有的一般概念,如果别的东西没有搞砸它:http://jsfiddle.net/jfriend00/nY6WC/

最新更新