所以我有一个像
这样的功能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
是undefined
。知道为什么吗?我该怎么办?
答案 0 :(得分:3)
您无法按照发布的方式定义功能。
但是,您可以使用function
关键字来定义您的功能:
function func() {
...
}
func(); // it works!
修改强> 根据您的评论,这是一个对象方法声明。为了使这项工作,您首先需要确保您的浏览器支持这个特定的ES2015功能,否则,您将其转换为有效的ES5。
然后您应该可以使用this.func()
:
const callAgain = () => { this.func(); };
如果您使用func()
,例如作为DOM事件的回调,您还必须确保在this
中正确绑定func
,例如通过在构造函数中显式绑定它:
constructor() {
...
this.func = this.func.bind(this);
}
答案 1 :(得分:1)
使用以下任一方法定义函数:
function func(){ ... }
或者...
var func = function(){ ... }
<小时/> 当你这样定义它时:
func() { ... }
JavaScript认为您正在尝试执行名为func
的现有函数,然后运行代码块{ ... }