Javascript 在return语句之后有多个值有什么意义?

Javascript 在return语句之后有多个值有什么意义?,javascript,return,Javascript,Return,我在摆弄AST树解析器,我发现一个ReturnStatement可以有多个表达式。正如您在下面的代码段中所看到的,return语句后面有多个值,但代码编译并运行成功(这是返回的最后一个值) 功能测试(){ 返回1、2、3; } log(test())1,2,3不是多个表达式,而是带有逗号运算符的单个表达式,在AST中称为SequenceExpression。逗号只有在子表达式有副作用时才有意义。例如,有些人喜欢这样编写reduce回调: let count = ary => ary.re

我在摆弄AST树解析器,我发现一个
ReturnStatement
可以有多个
表达式。正如您在下面的代码段中所看到的,return语句后面有多个值,但代码编译并运行成功(这是返回的最后一个值)

功能测试(){
返回1、2、3;
}

log(test())
1,2,3
不是多个表达式,而是带有逗号运算符的单个表达式,在AST中称为
SequenceExpression
。逗号只有在子表达式有副作用时才有意义。例如,有些人喜欢这样编写
reduce
回调:

let count = ary => ary.reduce(function (o, x) { 
    return o[x] = ++o[x] || 1, o 
}, {})
这里,逗号用于执行副作用
o[x]=…
,然后返回累加器

逗号运算符主要是为了简洁起见,没有它您总是可以相处的:

let count = ary => ary.reduce(function (o, x) { 
    o[x] = ++o[x] || 1; 
    return o 
}, {})

1,2,3
不是多个表达式,而是带有逗号运算符的单个表达式,在AST中称为
SequenceExpression
。逗号只有在子表达式有副作用时才有意义。例如,有些人喜欢这样编写
reduce
回调:

let count = ary => ary.reduce(function (o, x) { 
    return o[x] = ++o[x] || 1, o 
}, {})
这里,逗号用于执行副作用
o[x]=…
,然后返回累加器

逗号运算符主要是为了简洁起见,没有它您总是可以相处的:

let count = ary => ary.reduce(function (o, x) { 
    o[x] = ++o[x] || 1; 
    return o 
}, {})

例如,您可以在reduce上使用以下语法:。与许多其他语言一样,只返回最后一个值。您可以在reduce上使用此语法,例如,如下所示:。与许多其他语言一样,只返回最后一个值。值得一提的是,OP提到了此功能和/或错误的意义,实际上值得一提的是,在许多其他编程语言中都是这样的。因此,唯一的好处是最小化代码?我还说了
multiple expression
,因为
AST
称它们为
expressions
(更新了我的问题)。@briosheje:根据wiki,逗号运算符只存在于C和派生词以及Perl中,我不会称之为“其他很多”。@georg,我可以说“C和派生词”是整个蛋糕中相当大的一块吗P无论如何,你是对的,事实上,我只是想说它不是一个“bug”,它实际上在。。比如说其他语言?谈论简洁,但使用显式的
return
。)值得一提的是,OP提到了这个特性和/或bug的意义是什么,实际上在许多其他编程语言中都是这样的。所以唯一的好处是最小化代码?我还说了
multiple expression
,因为
AST
称它们为
expressions
(更新了我的问题)。@briosheje:根据wiki,逗号运算符只存在于C和派生词以及Perl中,我不会称之为“其他很多”。@georg,我可以说“C和派生词”是整个蛋糕中相当大的一块吗P无论如何,你是对的,事实上,我只是想说它不是一个“bug”,它实际上在。。比如说其他语言?谈论简洁,但使用显式的
return
。)