gpt4 book ai didi

javascript - nodejs `arguments` 是对象,但在浏览器中,它是一个 `array`

转载 作者:行者123 更新时间:2023-11-30 08:01:24 25 4
gpt4 key购买 nike

当我从 nodejs 中调用的函数内部访问 arguments 时...

echo '!function(){ console.log(arguments) }(1,2,3)' | node

...它输出一个对象...

{ '0': 1, '1': 2, '2': 3 }

...但是在谷歌浏览器中...

!function(){ console.log(arguments) }(1,2,3)

...输出...

[1, 2, 3]

为什么不一致?还有哪些其他 js 环境有这种不同的行为?我可以使用 arguments 吗?在我使用它之前如何确保它始终是一个数组?

最佳答案

控制台输出没有规则。输出不代表任何与语言标准有关的内容。

如果您创建一个程序来记录 JS 程序中的值,您可以随意显示这些值。

arguments 对象在两个地方是相同的。只是显示方式不同。

How can I ensure it is always an array before I use it?

它绝不是一个数组。它始终是一个类似数组的对象。在这两种情况下,它都显示对象成员 012 的值。只需使用不同的显示语法即可。

在 Chrome 中,尝试像这样创建一个对象:

var my_obj = {
"0": 1,
"2": 3,
"1": 2,
length: 3,
splice: function(){},
};

并将其记录在控制台中。它可能看起来像数组字面量,但显然不是。

关于javascript - nodejs `arguments` 是对象,但在浏览器中,它是一个 `array`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27207821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com