6

为什么参数不字符串化为数组?

有没有一种不那么冗长的方法可以使参数像数组一样字符串化?

function wtf(){
  console.log(JSON.stringify(arguments));
  // the ugly workaround
  console.log(JSON.stringify(Array.prototype.slice.call(arguments)));
}

wtf(1,2,3,4);
-->
{"0":1,"1":2,"2":3,"3":4}
[1,2,3,4]


wtf.apply(null, [1,2,3,4]);
-->
{"0":1,"1":2,"2":3,"3":4}
[1,2,3,4]

http://jsfiddle.net/w7SQF/

这不仅仅是在控制台中观看。这个想法是字符串被用在 ajax 请求中,然后另一方解析它,并想要一个数组,但得到其他东西。

4

2 回答 2

4

发生这种情况是因为 arguments不是一个数组,而是一个类似数组的 object。您的解决方法是将其转换为实际数组。JSON.stringify 的行为与此处的设计相同,但不是很直观。

于 2013-07-09T11:30:22.737 回答
0

JSON.stringify([...arguments]));

于 2021-07-31T20:54:27.647 回答