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() { ... }