JavaScript函数返回值疑问:为何执行代码后输出为3而非1,2,3?
为什么你的JavaScript代码返回最后一个元素而非多个值?
嘿,这事儿其实是JavaScript里逗号运算符的特性在搞怪,我给你拆解明白:
首先先提个小细节——你代码里写的是return (1,2,4);,运行后输出应该是4而不是你说的3,估计是手滑打错啦,但核心问题的逻辑是一致的。
逗号运算符的作用
JavaScript里的逗号运算符,有个明确的行为:它会从左到右依次执行每个逗号分隔的表达式,最终只返回最后一个表达式的结果。
放到你的代码里看:
function rrr() { return (1,2,4); }
括号里的(1,2,4)是一个用逗号运算符连接的表达式链:
- 先计算第一个表达式
1,但这个结果会被丢弃; - 接着计算第二个表达式
2,结果同样被丢弃; - 最后计算第三个表达式
4,这个结果会作为整个逗号表达式的返回值,也就是函数rrr的返回值。
所以n = rrr()之后,n的值就是4,console.log(n)自然输出最后这个值。
怎么返回多个值?
如果你想返回多个值,得用数组或者对象来包裹,比如:
- 返回数组:
function rrr() { return [1,2,4]; } const n = rrr(); console.log(n); // 输出 [1,2,4]
- 返回对象(适合需要给值命名的场景):
function rrr() { return {a:1, b:2, c:4}; } const n = rrr(); console.log(n.a, n.b, n.c); // 输出 1 2 4
内容的提问来源于stack exchange,提问作者sudhar
相关产品推荐
相关产品推荐

