开发者问题收集

语法错误:函数语句必须有名称

2017-08-23
587

我有下面这段(非常)短的代码,我想让它工作。它还有更多内容,但这部分我无法工作:

$(document).ready(function(){
    getEvents: function() {
        $.getJSON('/wp-json/routename/v1/shows/fri', function(data) {
            var events = data;
        });
    }
    getEvents();
    console.log(events);
});

在控制台中运行此代码时,我得到的只是“SyntaxError:函数语句必须有一个名称。”。我尝试简单地定义函数如下:

$(document).ready(function(){
    function getEvents() {
        $.getJSON('/wp-json/routename/v1/shows/fri', function(data) {
            var events = data;
        });
    }
    getEvents();
    console.log(events);
});

然后我在控制台中收到一条消息,指出“ReferenceError:找不到变量:事件”。

如果我仅定义事件并将 JSON 添加到其中(即 events = [{"name":"TEST"}]; ),而不是尝试通过 JSON 调用填充事件,它就会像魔法一样工作。

我在这里做错了什么?非常感谢您的帮助!

2个回答

如果您只在该范围内调用一次 getEvents ,则无需定义它。

$(document).ready(function(){
    $.getJSON('/wp-json/routename/v1/shows/fri', function(data) {
        var events = data;
        console.log(events);
    });
});

并且您试图在 events 可用之前记录它(因为 ajax 调用是异步的)。

sroes
2017-08-23

不确定您为什么会随机尝试添加额外的语法,但看起来您尝试做的就是这个:

$(document).ready(function(){
    $.getJSON('/wp-json/routename/v1/shows/fri', function(data) {
        var events = data;
        console.log(events);
    });
});

在第一次尝试中,您试图将函数定义为对象,这实际上没有任何意义。在第二次尝试中,您试图在该函数之外使用局部函数变量,这是您无法做到的。(您还试图在设置之前使用它,这也是您无法做到的。)

David
2017-08-23