这在箭头函数中是未定义的

Bes*_*sat 6 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
        myObject.getMyList(this.id, (myList) => {
            // here this in undefined
            this.list = myList;
        } 
    });
)};
Run Code Online (Sandbox Code Playgroud)

但是内部的箭头功能在ma回调函数中这是未定义的!!

我正在使用babel来传输代码:

myOutsideFunction: function myOutsideFunction() {
    var _this = this;
    myObject.getMyList(function (myList) {
        _this.list = myList;
    });
},
Run Code Online (Sandbox Code Playgroud)

ssu*_*ube 5

如果this位于undefined箭头函数内,则它在箭头之外也是未定义的。箭头函数只是捕获this周围范围的。

在这种情况下,您将声明myOutsideFunction为对象字面量上的方法,并且从不绑定它或执行任何其他将与对象一起调用它的操作this

调试时,请记住转译器可以重命名变量(并且必须重命名this才能正确捕获)。在控制台中使用原始名称而不包含包含重命名的源映射,undefined即使原始值不是,也会向您显示。确保在监视或控制台命令中使用转换后的名称。

  • @Besat babel 必须重命名 `this`,因为真实姓名被保留,通常使用 `_this` 代替。 (3认同)