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

use*_*256 1 javascript

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

题:

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

Aln*_*tak 6

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

return (this, 'one', 'two');
Run Code Online (Sandbox Code Playgroud)

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

在那个表达式中你实际上使用了"逗号运算符"(两次).

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

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