将函数的范围传递给回调函数

时间:2015-01-06 23:23:39

标签: javascript node.js

在节点中,我要说我有以下代码: -

function readDirectory(callback){
    fs.readdir('./', filterList);
}

function filterList(err,data){
    //callback is undefined
    if(err) callback(err);
    callback();
}

readDirectory(function(){
    console.log("Hi");
}

但如果我在readDirectory本身内定义函数,则以下情况有效,因为它在同一范围内: -

function readDirectory(callback){
    fs.readdir('./', function(err,data){
        if(err) callback(err);
        callback();
    });
}

readDirectory(function(){
    console.log("Hi");
}

所以我的问题是,有没有办法将readDirectory的范围传递给外部定义的回调函数?

1 个答案:

答案 0 :(得分:2)

  

所以我的问题是,有没有办法将readDirectory的范围传递给外部定义的回调函数?

不,JavaScript有词法范围。但是,您可以filterList接受回调:

function readDirectory(callback){
    fs.readdir('./', filterList(callback));
}

function filterList(callback) {
  return function(err,data){
    if(err) callback(err);
    callback();
  };
}