Ale*_*lex 5 javascript ecmascript-6
我刚刚开始熟悉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);
Run Code Online (Sandbox Code Playgroud)
这很好,但我不能不认为如果我这样做,我可以让这个更清洁:
callback(null, () => { switch(payload.returnType.toLowerCase()) { ... });
Run Code Online (Sandbox Code Playgroud)
我希望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);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,responseData
始终为空.是否可以将返回值作为我的第二个参数,或者将其responseData
作为箭头函数的结果绑定?
更短的自执行功能:
let res = (() => {
return something;
})()
Run Code Online (Sandbox Code Playgroud)
或者使用您的代码:
var getResponseData = (() => {
switch (payload.returnType.toLowerCase()) {
case "json" : return JSON.parse(httpRequest.responseText);
case "text" : return httpRequest.responseText;
default : return null;
}
})();
Run Code Online (Sandbox Code Playgroud)
您可以清楚地看到此代码段的区别:
let res = (() => {
return something;
})()
Run Code Online (Sandbox Code Playgroud)
您创建匿名函数但不执行它.
例如:
var getResponseData = () => {
switch (payload.returnType.toLowerCase()) {
case "json" : return JSON.parse(httpRequest.responseText);
case "text" : return httpRequest.responseText;
default : return null;
}
};
callback(null, getResponseData());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7533 次 |
最近记录: |