首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >return[]和return()之间的区别

return[]和return()之间的区别
EN

Stack Overflow用户
提问于 2013-06-13 15:39:03
回答 5查看 1.6K关注 0票数 1
代码语言:javascript
运行
复制
<script>
 function makeArray(arg1, arg2){  
        return [ this, arg1, arg2 ];  
    }   
    alert(window.makeArray('one', 'two'));
</script>

问题:

上面脚本的输出是:对象窗口,一,二,如果我改了返回this,arg1,arg2;要返回( this,arg1,arg2 );输出是:二。那么return[]和return()有什么区别呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-06-13 15:43:27

return不支持返回多个参数。它也不需要对其参数使用大括号,因此当您调用:

代码语言:javascript
运行
复制
return (this, 'one', 'two');

然后,大括号只包含一个表达式,该表达式的结果就是返回给调用者的内容。

在该表达式中,您实际使用了“逗号运算符”(两次)。

逗号表达式a, b同时计算ab,但表达式的结果仅为b (即右操作数)。

在您的例子中,您已经编写了(a, b, c),相当于((a, b), c),因此仍然返回最右边的操作数(即"two")

票数 6
EN

Stack Overflow用户

发布于 2013-06-13 15:44:12

other question可能会很有用。

从本质上讲,如果你有return[],实际上是return [],你的返回值就是一个项目列表。相比之下,return(x)只是调用return x的另一种方式。

正如@Alnitak所提到的,在return(a, 'one', 'two')中,您使用逗号操作符返回一个表达式。

票数 1
EN

Stack Overflow用户

发布于 2013-06-13 15:46:03

这将返回一个包含三个元素的数组。在Javascript中,[]用于数组表示法。

代码语言:javascript
运行
复制
return [ this, arg1, arg2 ]; 

而这会导致表达式求值,并始终返回最后一个参数(arg2):

代码语言:javascript
运行
复制
return ( this, arg1, arg2 ); 

要说明:

代码语言:javascript
运行
复制
console.log( ('a', 'b', 'c') ); // c
console.log( ('a', 'b', false) ); // false
console.log( (true, false, 0) ); // 0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17081688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档