Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的链返回_Javascript_Ecmascript 6 - Fatal编程技术网

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不是一个表达式。