<script>
function makeArray(arg1, arg2){
return [ this, arg1, arg2 ];
}
alert(window.makeArray('one', 'two'));
</script>
问题:
上面脚本的输出是:对象窗口,一,二,如果我改了返回this,arg1,arg2;要返回( this,arg1,arg2 );输出是:二。那么return[]和return()有什么区别呢?
发布于 2013-06-13 15:43:27
return
不支持返回多个参数。它也不需要对其参数使用大括号,因此当您调用:
return (this, 'one', 'two');
然后,大括号只包含一个表达式,该表达式的结果就是返回给调用者的内容。
在该表达式中,您实际使用了“逗号运算符”(两次)。
逗号表达式a, b
同时计算a
和b
,但表达式的结果仅为b
(即右操作数)。
在您的例子中,您已经编写了(a, b, c)
,相当于((a, b), c)
,因此仍然返回最右边的操作数(即"two"
)
发布于 2013-06-13 15:44:12
此other question可能会很有用。
从本质上讲,如果你有return[]
,实际上是return []
,你的返回值就是一个项目列表。相比之下,return(x)
只是调用return x
的另一种方式。
正如@Alnitak所提到的,在return(a, 'one', 'two')
中,您使用逗号操作符返回一个表达式。
发布于 2013-06-13 15:46:03
这将返回一个包含三个元素的数组。在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
https://stackoverflow.com/questions/17081688
复制相似问题