有没有办法在javascript中命名箭头函数?

时间:2015-03-26 00:07:40

标签: javascript typescript arrow-functions

我在应用程序中使用箭头功能,有时需要获取对函数本身的引用。对于普通的javascript函数,我可以命名它们并使用内部的名称。对于箭头功能,我目前正在使用arguments.callee。有没有办法命名箭头函数,以便可以从内部使用引用?

示例代码

//typescript
private evaluateIf(expr: parserModule.IIfExpression, callback: IEnvCallback) {
    this.evaluate(expr.condition, proceed=> {
        guard(arguments.callee, arguments, this);
        if (proceed !== false) this.evaluate(expr.then, callback);
        else if (expr.else) this.evaluate(expr.else, callback);
        else callback(false);
    });
}

//javascript
    Environment.prototype.evaluateIf = function (expr, callback) {
    var _this = this;
    this.evaluate(expr.condition, function (proceed) {
        guard(arguments.callee, arguments, _this);
        if (proceed !== false)
            _this.evaluate(expr.then, callback);
        else if (expr.else)
            _this.evaluate(expr.else, callback);
        else
            callback(false);
    });
};

在协助之后我确定了什么,因为争论可能不会永远存在

private evaluateIf(expr: parserModule.IIfExpression, callback: IEnvCallback) {
    var fn;
    this.evaluate(expr.condition, fn = proceed=> {
        guard(fn, [proceed], this);
        if (proceed !== false) this.evaluate(expr.then, callback);
        else if (expr.else) this.evaluate(expr.else, callback);
        else callback(false);
    });
}

1 个答案:

答案 0 :(得分:10)

  

有没有办法命名箭头函数,以便可以在

中使用引用

除非您将其分配给变量。例如:

var foo = () => {
    console.log(foo);
}
  

对于箭头功能,我目前正在使用arguments.callee

箭头功能不支持

arguments。 TS目前错误地允许您使用它们。这将是下一版本的打字稿中的错误。 This is to keep typescript arrow functions compatible with the JS Language Specification

对于您的用例,我只使用function