Javascript ES6失去封闭范围的箭头

Javascript ES6失去封闭范围的箭头,javascript,ecmascript-6,Javascript,Ecmascript 6,您好,我的印象是,如果您使用箭头函数,这指的是下面链接中解释的封闭范围 : ES2015箭头 ES2015规范介绍了的箭头函数语法 编写函数表达式。而且比一般人要简洁 函数表达式,它们也可以有隐式返回和 重要的是,它们总是使用封闭 范围 在下面的示例中,此不是指封闭范围,而是指全局范围 addMeasurement(username,jsonObject){ ... return fetch(measurementURL, { method: 'PATCH

您好,我的印象是,如果您使用箭头函数,这指的是下面链接中解释的封闭范围

:

  • ES2015箭头
  • ES2015规范介绍了的箭头函数语法 编写函数表达式。而且比一般人要简洁 函数表达式,它们也可以有隐式返回和 重要的是,它们总是使用封闭 范围

    在下面的示例中,此不是指封闭范围,而是指全局范围

    addMeasurement(username,jsonObject){
        ...
        return fetch(measurementURL,
        {
            method: 'PATCH',
            body: jsonStringify
        }).then( (res) => { 
            // this below refers to the global context. 
            //Instead of the current instance and hence is undefined
            this.addMeasurementToAudit(username,jsonObject)             
            res.json() 
        });
    }
    
    如果不使用箭头并显式绑定,则可以按预期工作:

    addMeasurement(username,jsonObject){
        ...
        return fetch(measurementURL,
        {
            method: 'PATCH',
            body: jsonStringify
        }).then( function success(res) { 
            //this refers to the enclosing instance and works as expected
            this.addMeasurementToAudit(username,jsonObject)
            res.json() 
        }.bind(this));
    },
    

    addMeasurement
    中的return语句之前,
    this
    指的是什么?这是确切的代码吗?如果是这样&后者有效,那么前者肯定有效。如何调用和定义
    addMeasurement
    ?它是在类中还是在对象中?@Mauricioppe它指的是封闭的上下文…例如。电流instance@ShivamSinha这不是完整的函数,因为没有可查看的封闭范围,也没有显示如何调用
    addMeasurement
    。尾随的
    使我认为它是一个对象,但可能不是。这并不是说这会有什么不同,而是可能会让你的大脑更容易复制issue@ShivamSinha:该pastebin代码不是您在此处显示的代码
    addMeasurementToLocal
    是一个函数调用,而不是一个方法调用,类似的东西将是您的问题。另外,在
    FirebaseRESTUtil.addMeasurement
    中,您没有使用箭头函数。