Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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(Node.js)将json分解为现有变量_Javascript_Node.js_Destructuring - Fatal编程技术网

Javascript(Node.js)将json分解为现有变量

Javascript(Node.js)将json分解为现有变量,javascript,node.js,destructuring,Javascript,Node.js,Destructuring,我想知道是否有可能在一个方法中声明一次变量,然后多次重用它们来捕获非结构化的返回值 例如: function verifyStatusAsSignedIn(url, cred){ // code truncated return { 'error' : false, 'status': true } } 我可以同时声明和解构JSON const { error , status } = verifyStatusAsSignedIn(url, cred); 但

我想知道是否有可能在一个方法中声明一次变量,然后多次重用它们来捕获非结构化的返回值

例如:

  function verifyStatusAsSignedIn(url, cred){

     // code truncated

     return { 'error' : false, 'status': true }
  }
我可以同时声明和解构JSON

 const { error , status } = verifyStatusAsSignedIn(url, cred);
但是我调用了更多的方法,这些方法也将返回带有错误和状态的JSON,就像“verifyStatusAsSignedIn()”方法一样

理想情况下,我希望这样做:

  let error, status;

  { error, status } = verifyStatusAsSignedIn(url, cred);

  //  handle or respond to error and status.

  { error, status } = nextStep(val1, val2);

  // handle or respond to error and status
但这给了我一个“警告”的声明或声明


是否可以重复使用现有变量来分解json对象?

您只需在json对象周围使用如下参数即可分配给现有变量:

let error, status;
({ error, status } = verifyStatusAsSignedIn(url, cred));
这是因为没有parens,Javascript认为
{
是一个新块作用域的开始。显然,这是一个解构赋值语法与现有语法规则发生冲突的地方,因此需要与parens一起努力才能以这种方式使用它


您可以看到MDN描述了这种情况。

感谢@jfriend00的快速响应。这很简单,我将尝试一下,然后回来将其标记为已接受的答案。我刚刚尝试了一下,得到了以下错误“SyntaxError:Invalid left-side in assignment”。对该错误的进一步研究表明,一个变体似乎有效-({error,status}=verifyStatus(url,cred));注意,整行都在括号中,而不仅仅是左边。这是正确的方式还是您的建议需要一些特殊的东西?@Curious101-是的,您是对的。我更正了我的答案。谢谢!我已经成功地测试了它并接受了您的答案。谢谢您的帮助。重复使用sam不是一个好做法e变量仅仅因为它们在对象中作为相同的键返回,您就可以通过
{error:validationError,status:validationStatus}=verifyStatusAsSignedIn(url,cred)在销毁时重命名变量
谢谢@AZ。我故意返回相同的键,并且觉得它更容易阅读。长变量名有时会变得很麻烦。但是你的建议很有趣,我可以在解构时重命名它们。我将在其他用例中试用它,因为我认为它会不止一次派上用场。