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。我故意返回相同的键,并且觉得它更容易阅读。长变量名有时会变得很麻烦。但是你的建议很有趣,我可以在解构时重命名它们。我将在其他用例中试用它,因为我认为它会不止一次派上用场。