Bil*_*oon 1 javascript browser google-chrome node.js
当我arguments从nodejs中调用函数内部时...
echo '!function(){ console.log(arguments) }(1,2,3)' | node
Run Code Online (Sandbox Code Playgroud)
...它输出一个对象......
{ '0': 1, '1': 2, '2': 3 }
Run Code Online (Sandbox Code Playgroud)
...但在谷歌Chrome ...
!function(){ console.log(arguments) }(1,2,3)
Run Code Online (Sandbox Code Playgroud)
......输出......
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
为什么不一致?还有哪些其他js环境有这种不同的行为?我可以使用arguments吗?在使用它之前,如何确保它始终是一个数组?
控制台输出没有规则.输出不代表任何与语言标准有关的内容.
如果您创建一个从JS程序中记录值的程序,您可以随意显示这些值.
arguments两个地方的对象都是一样的.只有它的显示方式不同.
在使用它之前,如何确保它始终是一个数组?
它永远不是一个阵列.它总是一个类似于数组的对象.在这两种情况下,它都显示对象成员的值0,1和2.只需使用不同的显示语法即可.
在Chrome中,尝试创建如下对象:
var my_obj = {
"0": 1,
"2": 3,
"1": 2,
length: 3,
splice: function(){},
};
Run Code Online (Sandbox Code Playgroud)
并将其记录在控制台中.它可能看起来像一个数组文字,虽然它显然不是.
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |