Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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 为什么在此上下文中未定义func?_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 为什么在此上下文中未定义func?

Javascript 为什么在此上下文中未定义func?,javascript,ecmascript-6,Javascript,Ecmascript 6,所以我有一个函数,比如 func() { const curVal = this.curVal; const callAgain = () => { func(); }; Axios.get('somecontroller/someaction') .then(response => { const newVal = response.data.curVal; if(curVal

所以我有一个函数,比如

func()
{
    const curVal = this.curVal;
    const callAgain = () => { func(); };
    Axios.get('somecontroller/someaction')
        .then(response =>
        {
            const newVal = response.data.curVal;
            if(curVal === newVal)
                setTimeout(callAgain, 500);
            else
                // ....
        })
        .catch(response =>
        {
            // ...
        });
}
我的浏览器正在抱怨这条线路

const callAgain = () => { func(); };

说func是未定义的。知道为什么吗?我该怎么修理

您不能以发布的方式定义函数

但是,例如,您可以使用function关键字定义函数:

function func() {
    ...
}

func(); // it works!
编辑: 根据您的评论,这是一个对象方法声明。为了实现这一点,您首先需要确保您的浏览器支持此特定的ES2015功能,如果不支持,请将其传输到有效的ES5

然后,您应该能够使用this.func访问函数:

如果使用func,例如作为DOM事件的回调,则还必须确保在func中正确绑定,例如在构造函数中显式绑定:

constructor() {
    ...

    this.func = this.func.bind(this);
}

使用以下任一项定义函数:

function func(){ ... }
或者

当您这样定义它时:

func() { ... }

JavaScript认为您正在尝试执行一个名为func的现有函数,然后运行代码块{…}

func\n{…}到底是什么?它是一个函数调用,后跟一个块吗?如果func{…}是一个对象方法定义,那么func是未定义的,因为对象方法不会在本地范围内为自己创建绑定。这些是React类中的函数,就像您在这里看到的那样,如果这是问题所在,会不会出现其他错误?@Ms.Corlib:那么这是一个类方法定义?如果是,请使用this.func。
var func = function(){ ... }
func() { ... }