将javascript变量传递给函数时,会得到一个空值

将javascript变量传递给函数时,会得到一个空值,javascript,jquery,Javascript,Jquery,我正在使用Jquery,我确实创建了一个变量,在这里我确实返回了一个json对象。这个函数等待两个参数,第一个是源,第二个是全局变量,我希望函数保存它。但是当我想从全局变量中获取值时,它是空的 这是我的密码 $(function(){ var selectedSuggestion1 = null; var selectedSuggestion2 = null; loadSuggestions(responseObject); $('#btnShow').click(function(){

我正在使用Jquery,我确实创建了一个变量,在这里我确实返回了一个json对象。这个函数等待两个参数,第一个是源,第二个是全局变量,我希望函数保存它。但是当我想从全局变量中获取值时,它是空的

这是我的密码

$(function(){
var selectedSuggestion1 = null;
var selectedSuggestion2 = null;


loadSuggestions(responseObject);

$('#btnShow').click(function(){
    var drp = $('#range1').data('daterangepicker');
    console.log(selectedSuggestion1);
    var params = {};
    params['id'] = selectedSuggestion1.id;
    params['type'] = selectedSuggestion1.type;
    params['startDate'] = drp.starDate.format('YYYY-MM-DD');
    params['endDate'] = drp.endDate.format('YYYY-MM-DD');

    console.log(params);
});

function loadSuggestions(comparative){
    var arrCustomerSug = new Array();
    $.each(comparative.lsCustomersSug, function(i, e){
        arrCustomerSug.push({
            type: 1,
            value: e.name,
            id: e.id
        });
    });

    var cfgAutoComplete = function(source, variable){
            var jsonResponse = {
                    source: source,
                    select: function(event, ui){
                        variable = ui.item;
                    },
                    search: function(event, ui){},
                    messages:{
                        noResults: '',
                        results: function(){}
                    }
            };
            return jsonResponse;
    }

    $('#inpCustomerSuggestion1').autocomplete(cfgAutoComplete(arrCustomerSug, selectedSuggestion1));
正是在“cfgAutoComplete”函数中。我将全局变量“selectedSuggestion1”传递给函数,当select函数处于活动状态时,该函数必须保存变量上的值。但不是吗

在click函数中,我尝试获取值,但这个值为空。 如果我按原样放置全局变量,我得到值。但是我需要它是动态的。

在这个函数调用中

cfgAutoComplete(arrCustomerSug, selectedSuggestion1)
selectedSuggestion1
是一个字符串。它的值被传递到cfgAutoComplete,而不是全局变量的引用。因此,在您的函数中,更新
变量
不会像您所希望的那样更新全局var

快速修复,以字符串形式传入全局文件的名称:

cfgAutoComplete(arrCustomerSug, "selectedSuggestion1")
然后在cfgautomplete中,通过
窗口
对象查找并更新所需的全局变量

var cfgAutoComplete = function(source, globalName){
        var jsonResponse = {
                source: source,
                select: function(event, ui){
                    window[globalName] = ui.item;
                    ...

显然,传递给
select
的函数没有被执行。从那里开始。