Javascript中的链返回
我正试图重构代码以实现简洁。我想做这样的事情:Javascript中的链返回,javascript,ecmascript-6,Javascript,Ecmascript 6,我正试图重构代码以实现简洁。我想做这样的事情: const status = response => { response.status >=200 && response.status < 300 && return response; ... more logic here if status is not in range ... throw some error ... }; const status=response
const status = response => {
response.status >=200 && response.status < 300 && return response;
... more logic here if status is not in range
...
throw some error ...
};
const status=response=>{
response.status>=200&&response.status<300&&return response;
…如果状态不在范围内,则此处更具逻辑性
...
抛出一些错误。。。
};
为什么不允许像这样有条件地返回?这就是语法的工作原理-
返回不能在需要表达式的地方,例如使用&&
运算符<代码>返回
必须始终是独立语句。(表达式是计算为值的任何代码块。)
但是,如果,您可以通过简单的旧实现您想要的:
const status = response => {
if (response.status >=200 && response.status < 300) return response;
// ... more logic here if status is not in range
throw 'some error ...'
};
const status=response=>{
如果(response.status>=200&&response.status<300)返回响应;
//…如果状态不在范围内,则此处更具逻辑性
抛出“一些错误…”
};
语法就是这样工作的-return
不能在需要表达式的地方,例如使用&&
运算符<代码>返回
必须始终是独立语句。(表达式是计算为值的任何代码块。)
但是,如果,您可以通过简单的旧实现您想要的:
const status = response => {
if (response.status >=200 && response.status < 300) return response;
// ... more logic here if status is not in range
throw 'some error ...'
};
const status=response=>{
如果(response.status>=200&&response.status<300)返回响应;
//…如果状态不在范围内,则此处更具逻辑性
抛出“一些错误…”
};
此外,您还可以用速记的方式来完成:
return (response.status >=200 && response.status < 300) ? response : 'return some magic here...'
返回(response.status>=200&&response.status<300)?回答:“在这里返回一些魔法…”
此外,您还可以用速记的方式来完成:
return (response.status >=200 && response.status < 300) ? response : 'return some magic here...'
返回(response.status>=200&&response.status<300)?回答:“在这里返回一些魔法…”
return
语句不是一个表达式。return
语句不是一个表达式。但是这里更神奇的是
也必须是一个表达式-除非你把所有的东西都放到一个生活中,或者类似的东西中,否则附加语句在那里是不起作用的。OP没有提到else语句逻辑,但你是对的,这取决于他的需要。我只是想给他展示一下这个选项。但是这里的更神奇的是也必须是一个表达式-除非你把所有的东西都放到生活中,或者类似的东西中,否则附加语句在那里是不起作用的。OP没有提到else语句逻辑,但你是对的,这取决于他的需要。只是想让他看看这个选择。谢谢!这是有道理的。Return不是一个表达,谢谢!这是有道理的。Return不是一个表达式。