JavaScript 中是否有命名箭头函数的方法?
Is there a way to name arrow functions in JavaScript?
我在应用程序中使用箭头函数,有时需要获取对函数本身的引用。对于普通的 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);
});
}
Is there a way to name arrow functions so that a reference can be used from within?
除非您将其分配给变量,否则不会。例如:
var foo = () => {
console.log(foo);
}
For arrow functions, I'm currently using arguments.callee
arguments
不被箭头函数支持。 TypeScript 当前错误地允许您使用它们。这将是下一个版本的 TypeScript 中的一个错误。 This is to keep TypeScript arrow functions compatible with the JavaScript Language Specification.
对于您的用例,我只使用 function
.
我在应用程序中使用箭头函数,有时需要获取对函数本身的引用。对于普通的 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);
});
}
Is there a way to name arrow functions so that a reference can be used from within?
除非您将其分配给变量,否则不会。例如:
var foo = () => {
console.log(foo);
}
For arrow functions, I'm currently using arguments.callee
arguments
不被箭头函数支持。 TypeScript 当前错误地允许您使用它们。这将是下一个版本的 TypeScript 中的一个错误。 This is to keep TypeScript arrow functions compatible with the JavaScript Language Specification.
对于您的用例,我只使用 function
.