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

时间:2013-06-13 07:39:03

标签: javascript

<script>
 function makeArray(arg1, arg2){  
        return [ this, arg1, arg2 ];  
    }   
    alert(window.makeArray('one', 'two'));
</script>

问题:

上面脚本的输出是:[Object Window],一,二,如果我改变了返回[this,arg1,arg2];返回(this,arg1,arg2);输出是:两个。那么return []和return()之间有什么区别?

5 个答案:

答案 0 :(得分:6)

return不支持返回多个参数。它的论证也不需要大括号,所以当你打电话时:

return (this, 'one', 'two');

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

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

逗号表达式a, b同时评估ab,但表达式的结果只是b(即右手)操作数)。

在你的情况下,你写了(a, b, c),相当于((a, b), c),因此仍然返回最右边的操作数(即"two"

答案 1 :(得分:1)

other question可能有用。

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

如@Alnitak所述,在return(a, 'one', 'two')中,您使用逗号运算符返回表达式。

答案 2 :(得分:1)

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

return [ this, arg1, arg2 ]; 

然而这会导致表达式被计算,并且将始终返回最后一个参数(arg2):

return ( this, arg1, arg2 ); 

要说明:

console.log( ('a', 'b', 'c') ); // c
console.log( ('a', 'b', false) ); // false
console.log( (true, false, 0) ); // 0

答案 3 :(得分:1)

没有像return[]return()这样的特殊构造。它始终只是return <some expression>

方括号是一个数组文字,因此您将获得一个数组作为返回值。 ()只是括号,x, y始终是y(查找逗号运算符)。

答案 4 :(得分:0)

在javascript中,第一个被解决的操作数是圆括号,即() 逗号运算符解析为最后一个操作数,即“两个”。

return ('one', 'two')
return ('two')

因此它返回两个