首页 > 解决方案 > JavaScript 中的多个返回值

问题描述

注意:我已经查看了这个同名的问题和其他几个问题。我的问题有些不同。

我正在阅读一篇文章,并遇到了我以前从未见过的 JS 模式。我一直在尝试使用它(详情如下),但它仍然没有意义。搜索也枯竭了。

这是模式(上面文章中引用的代码)。具体线路:

return 'The error is', err;

我试图在控制台中更简单地重现这一点(同时重现基本上下文,以防这是正在发生的事情的一部分):

obj = {
    resolve(whatever, another) {
      console.log(whatever, another);
      return 'The error is', whatever;
    }
}

第一次尝试是单个变量来捕获返回:

a = obj.resolve('Hey', 'there');
Hey there // What is console logged
"Hey" // The return -- NOT "The error is"
a
"Hey" // a value equals the return

然后我尝试将两个返回值作为解构数组访问:

[b, c] = obj.resolve('Whats', 'up');
Whats up // What is console logged
"Whats" // The return value
b
"W" // b value
c
"h" // c value

最后,为了好玩,我尝试了对象解构:

{d, e} = obj.resolve('Another', 'one');
Uncaught SyntaxError: Unexpected token =

为了确认它似乎只返回最后一个值,我也尝试了这个:

function func (arg) {
  return 'First', arg, 'Third';
}

z = func('hello')
"Third" // The return
z
"Third"

有谁知道这里发生了什么/JavaScript 如何读取此代码?看起来只返回最终值。是否有关于这是如何工作的文档?有任何理由使用这种模式吗?似乎除了最后一个返回值之外的所有内容都被忽略了。

标签: javascriptecmascript-6

解决方案


推荐阅读