Javascript Firefox引用错误:。。。未定义问题

Javascript Firefox引用错误:。。。未定义问题,javascript,jquery,firefox,Javascript,Jquery,Firefox,我正在使用带有服务器端处理的Datatables,我需要向查询中添加一些额外的参数来进行过滤。这是我的设置的样子: if($('#example').length) { var oTable = $('#listings').dataTable({ "bProcessing": true, "bServerSide": true, "sAjaxSource": ajax_url+'?action=load_table_data',

我正在使用带有服务器端处理的Datatables,我需要向查询中添加一些额外的参数来进行过滤。这是我的设置的样子:

if($('#example').length) {
    var oTable = $('#listings').dataTable({
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": ajax_url+'?action=load_table_data',
        "fnServerParams": function ( aoData ) {
             aoData.push( { "name": "filters", "value": get_table_filters() } );
        }
    });

    var tableFilterArray = {};
    //Setting up and changing the filters, etc...

    function get_table_filters() {
        return JSON.stringify(tableFilterArray);
    }
}
该脚本在Chrome中运行良好,但无法在Firefox中运行,导致以下错误:

ReferenceError:未定义get\u表\u筛选器

下面是一个演示:


我错过了什么

将get_table_过滤器移出if语句

if($('#example').length) {
var oTable = $('#listings').dataTable({
    "bProcessing": true,
    "bServerSide": true,
    "sAjaxSource": ajax_url+'?action=load_table_data',
    "fnServerParams": function ( aoData ) {
         aoData.push( { "name": "filters", "value": get_table_filters() } );
    }
});
    var tableFilterArray = {};
}

function get_table_filters() {
    return JSON.stringify(tableFilterArray);
}

您是否尝试将函数向上移动到oTable上方?@adeneo这样的函数声明不应该在其父函数范围内的任何位置都可用吗?我想我们没有得到这里的所有代码。@dhsto:Firefox对出现在语句块中的函数声明有一种特殊的语法。它的行为更像一个语句,而不是一个声明,因此它不会被提升。这可能是这里的问题,但是passatgt没有提供足够的代码来确定。你已经有了答案,你在if语句中声明函数,它不是真正有效的javascript,但是大多数浏览器都允许它,但是在firefox中没有提升语句,请参阅指向