我已经在一个回调中放置了一个断点,在该回调中我应该对一个对象数组进行搜索。 array.find语句返回我期望的元素,但是如果我尝试将此结果分配给变量,则会得到“未定义”
let resultCallback = function(data) {
var el = form.texts.find(text => {
text.options.name === this.options.name;
}, that);// breakpoint is here
//in console, form.texts.find(text => {text.options.name === this.options.name}, that); returns the element I"m looking for
// but el still is 'undefined'
};
我不确定我是否使用了任何保留的变量名,但是更改名称并不能解决问题。查看文档时,我发现可以将find的结果分配给变量,所以我不确定这里出了什么问题。
有人可以帮忙吗?
答案 0 :(得分:0)
您的find函数不返回任何内容,这默认情况下意味着它返回undefined
。要么丢失第2-4行的代码块,要么在text.options.name === this.options.name;
使用箭头功能时,如果定义块,则需要return关键字。否则,它将在箭头之后立即返回表达式。
答案 1 :(得分:0)
您对上下文有疑问。您使用的此对象的上下文属于resultCallback函数,因为它不是箭头函数。我不知道该函数在哪里声明,但尝试首先将其更改为箭头函数。即
let resultCallback = (data) => {
var el = form.texts.find(text =>
text.options.name === this.options.name, that
);
};
您要将此对象引用作为第二个参数传递给find,这是不必要的,因为在调用resultCallback函数时,您没有将“ that”作为参数传递给该函数。并且还从箭头功能中删除了冰壶,以便返回比较结果。