【发布时间】:2016-05-14 14:53:47
【问题描述】:
我刚刚开始习惯 ES6 语法,我想知道是否可以使用箭头函数分配给变量。我正在编写一个基本的轻量级 AJAX 帮助程序库,状态为 200,我想向用户返回一个有效负载,我目前正在这样做:
var responseData = "";
switch (payload.returnType.toLowerCase()) {
case "json" : responseData = JSON.parse(httpRequest.responseText); break;
case "text" : responseData = httpRequest.responseText; break;
default : responseData = null; break;
}
callback(null, responseData);
这很好,但我不禁想如果我这样做的话,我可以把它弄得更干净:
callback(null, () => { switch(payload.returnType.toLowerCase()) { ... });
我希望 return 语句将表达式的结果作为回调中的第二个参数发送,但是当我从调用者控制台登录时,它会打印 switch 语句。
或者我已经尝试过:
var responseData = () => {
switch (payload.returnType.toLowerCase()) {
case "json" : return JSON.parse(httpRequest.responseText); break;
case "text" : return httpRequest.responseText; break;
default : return null; break;
}
}
callback(null, responseData);
在这种情况下,responseData 始终为空。是否可以将返回值作为我的第二个参数,或者将其绑定到 responseData 作为箭头函数的结果?
【问题讨论】:
-
您创建了一个函数,但没有执行该函数。
-
你还必须实际返回一些东西——如果你不使用 {},你不需要返回,但是由于你的函数有 () => {},你需要返回你想要的值。
-
@NetaMeta 是的,对不起,我复制并粘贴了答案中的第一个块,我知道我需要从函数返回分配:)
-
对于您的
callback(null, () => { switch(payload.returnType.toLowerCase()) { ... });,如果您像这样执行它,这也将起作用:callback(null, (() => { switch(payload.returnType.toLowerCase()) { ... })); -
只是为了说清楚:需要执行函数才能获得返回值。