Javascript 函数中的变量在jquery中不可用,但在没有函数的情况下可用

Javascript 函数中的变量在jquery中不可用,但在没有函数的情况下可用,javascript,jquery,Javascript,Jquery,我对javascript非常陌生,但我对函数的行为感到困惑: $('#get_file').on('click', function(event) { var start_date = $("#table_date_start").val(), end_date = $("#table_date_end").val(), href = apiUrl.concat( 'download_pdf',

我对javascript非常陌生,但我对函数的行为感到困惑:

$('#get_file').on('click', function(event) {
    var start_date = $("#table_date_start").val(),
        end_date = $("#table_date_end").val(),
        href = apiUrl.concat(
                'download_pdf',
                '?start_date=' + start_date,
                '&end_date=' + end_date,
                '&order=', order[1],
                '&order_type=', order[0]
            );
    e.target.href = href;
});

变量start_date、end_date和href在函数内部不可用,但在函数外部可用。怎么会这样?有人能告诉我为什么会发生这种事吗

您在同一行中声明了所有3个变量,因此在整行完成之前不会创建它们。在声明第三个变量之前,结束声明前两个变量的行

var start_date = $("#table_date_start").val();
var end_date = $("#table_date_end").val();

您在同一行中声明了所有3个变量,因此在整行完成之前不会创建它们。在声明第三个变量之前,结束声明前两个变量的行

var start_date = $("#table_date_start").val();
var end_date = $("#table_date_end").val();


你的变量是全局的吗?如果不是,则将其设置为全局是什么让您认为变量在函数中不可用?它的良好实践是以新的格式声明变量line@Adelin,它们不会显示在href请求中,并且console.log也是空的。您使用的浏览器是什么?这似乎是一个特定于浏览器的问题,因为它在Chrome中运行良好,但在IEdge中却不行:您的变量是全局变量吗?如果不是,则将其设置为全局是什么让您认为变量在函数中不可用?它的良好实践是以新的格式声明变量line@Adelin,它们不会显示在href请求中,并且console.log也是空的。您使用的浏览器是什么?这似乎是一个特定于浏览器的问题,因为它在Chrome中运行良好,但在IEdge中不起作用:现在我很好奇为什么它们在外部可用:)似乎是一个特定于浏览器的问题,因为逗号分隔的变量在Chrome中运行良好,但不是在IEdge中:我可以想象它是基于个人浏览器的Javascript实现的。@Adelin,很抱歉给你带来了困惑。当然,它们不能作为全局变量使用,但如果我在函数外部声明相同的变量,它们将提供所需的输出。现在我很好奇为什么它们在函数外部可用:)似乎是浏览器特有的问题,因为逗号分隔的变量在chrome中工作良好,但不是在IEdge中:我可以想象它是基于个人浏览器的Javascript实现的。@Adelin,很抱歉给你带来了困惑。当然,它们不作为全局变量工作,但是如果我在函数外部声明相同的变量,它们将给出所需的输出。