Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 匿名函数的访问函数参数_Javascript_Jquery_Closures - Fatal编程技术网

Javascript 匿名函数的访问函数参数

Javascript 匿名函数的访问函数参数,javascript,jquery,closures,Javascript,Jquery,Closures,如何从下面的FetchData方法中访问版本参数 注意-Fetch data是一个异步Rest调用,它将数据传递给回调函数 function TestData(guid, version) { var data = ''; data = FetchData(guid, function (guid, msg) { alert(version);

如何从下面的FetchData方法中访问版本参数

注意-Fetch data是一个异步Rest调用,它将数据传递给回调函数

 function TestData(guid, version) {                    
            var data = '';
            data =  FetchData(guid, function (guid, msg) {
                    alert(version);
            return getData(guid, msg);      
            }));        
        }

尝试将
version
param添加到
FetchData
函数中。 这是最简单的方法

function TestData(guid, version) {                    
     var data = '';
     data =  FetchData(guid, version, function (guid, msg) {
           alert(version);
           return getData(guid, msg);      
     }));        
}

如果您在回调中需要它-这段代码就可以了

例如,此代码的结果将是警报(“hello”)


你们不能把version作为参数传递给FetchData吗?你们所拥有的应该可以正常工作。JavaScript具有词法范围,
version
显然位于回调的词法范围内。有什么问题?(我的意思是,有一个语法错误,可能就是这样吧?)?是什么让您认为
FetchData
甚至接受了第三个参数?如果您在FetchData函数中运行callback,那么您就可以访问
version
变量。我不知道你们的代码,同样的想法是把这个变量传递给回调函数。“若你们在FetchData函数中运行回调,那个么你们就可以访问版本变量。”不是全部!反例:
函数FetchData(foo,cb){cb();};FetchData(42,函数(){alert(foo);})。根据您的说法,回调应该可以访问
foo
。但它没有,它抛出了一个错误。JavaScript有词法范围,而不是动态范围。我不明白你的问题是什么。您想从第一个触发函数发送
version
变量,但不想将其设置为参数?我没有问题。我只是说你提出的解决方案并不能解决眼前的问题。OP希望访问回调中的
版本
。仅仅将
version
传递给执行回调的函数并不能解决这个问题。坦白地说,OP的代码没有明显的错误,它应该按原样工作。所以你是说OP的代码没有问题,问题应该解决?是的,除非我不理解这个问题。
 function TestData(guid, version) {                    
        var data = '';
        data =  FetchData(guid, function (guid, msg) {
                alert(version);
        return getData(guid, msg);      
        });        
    }
function FetchData(guid, callback) {
     $.get('http://www.example.com/', callback);
}
TestData('abc', 'hello');