有没有一种方法可以在JavaScript中命名箭头函数

Is there a way to name arrow functions in JavaScript?

本文关键字:JavaScript 函数 一种 方法 有没有      更新时间:2023-09-26

我在应用程序中使用箭头函数,有时需要获得对函数本身的引用。对于普通的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);
    });
}

有没有一种方法可以命名箭头函数,以便从内部使用引用?

除非你把它分配给一个变量。例如:

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

对于箭头函数,我目前正在使用arguments.callee

箭头函数不支持arguments。TypeScript当前错误地允许您使用它们。这将是TypeScript的下一个版本中的错误。这是为了保持TypeScript箭头函数与JavaScript语言规范兼容。

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