Javascript 这是未定义的内部箭头函数
我正在尝试在我的箭头功能中访问此项:Javascript 这是未定义的内部箭头函数,javascript,this,undefined,arrow-functions,Javascript,This,Undefined,Arrow Functions,我正在尝试在我的箭头功能中访问此项: import myObject from '../myObjectPath'; export const myClass = Fluxxor.createStore({ initialize() { this.list = []; this.id = null; }, myOutsideFunction(variable1) { // here this in NOT undefined
import myObject from '../myObjectPath';
export const myClass = Fluxxor.createStore({
initialize() {
this.list = [];
this.id = null;
},
myOutsideFunction(variable1) {
// here this in NOT undefined
myObject.getMyList(this.id, (myList) => {
// here this in undefined
this.list = myList;
}
});
)};
但是在ma回调函数中的箭头函数是未定义的
我正在使用babel传输代码:
myOutsideFunction: function myOutsideFunction() {
var _this = this;
myObject.getMyList(function (myList) {
_this.list = myList;
});
},
如果
此
在箭头函数中是未定义的
,则在箭头之外也是未定义的。箭头函数只需捕获周围范围的此
在本例中,您将myOutsideFunction
声明为对象文本上的一个方法,并且从不将其绑定或执行任何其他操作,以this
的形式使用对象调用它
调试时,请记住Transpiler可以重命名变量(并且必须重命名
此
,才能正确捕获)。在控制台中使用不包含重命名的sourcemaps的原始名称将显示未定义的
,即使原始值不是。确保在手表或控制台命令中使用传输名称。绑定此
,或将其存储在箭头函数范围外的临时变量中。此
的值取决于调用myOutsideFunction
的方式。它是如何命名的?@Jite使用arrow函数的整个想法是不必绑定它!@Felix Kling myOutsideFunction是从类中的另一个函数调用的。但是这不重要,因为myOutside函数有这个。@Jite Np:))虽然它不适用于我:Dstrange,因为它是在函数调用之前写的。//在这里它不是未定义的
,所以这个
不应该在箭头中未定义function@oliv37严格地说,那是不可能的。箭头函数是一种语言功能,始终会收到与此相同的。我不知道有任何运行时在这方面有bug(因为它是arrow函数的基础)。这就是我所想的!!这应该是不可能的!但我已经测试了好几次,我得到了未定义的内部箭头函数,但它不是未定义的权利之前调用it@Besat您是否通过transpiler或类似的东西(babel、webpack等)运行此代码?如果是的话,你能包括输出吗?编译器可能正在更改某些变量名,使其在控制台中显示为未定义,但这只是因为您引用的是原始(传输前)名称。@Besat babel将不得不重命名此
,因为保留了实名,通常使用\u this
。