13

アプリで矢印関数を使用していますが、関数自体への参照を取得する必要がある場合があります。通常の 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);
    });
}
4

1 に答える 1