首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用object.keys(参数).length VS arguments.length

使用object.keys(参数).length VS arguments.length
EN

Stack Overflow用户
提问于 2021-07-07 09:45:08
回答 3查看 84关注 0票数 1

我对JS很陌生,我试着理解我在几个地方读到的东西:

在尝试获取函数收到的参数数时,使用了Object.keys(arguments).length。然而,据我所知,这没有任何好处,更短的方法是只使用arguments.length

这是因为arguments拥有.length属性。(MDN参数对象)

有什么东西我遗漏了吗?在某些情况下,在性能或安全性方面首选使用object.keys()吗?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-07 10:27:54

arguments是一个“异域对象”,它是“类似数组的”--它具有数值属性和.length。与Object.keys一起使用它与Object.keys(someArray)一样有意义,也就是说,没有。

在新代码中,最好完全避免使用arguments,因为它具有一些不透明的特性,比如参数变量的不可见突变。示例:

代码语言:javascript
运行
复制
function someFunctionThatMutatesArray(a) {
    a[0] = 'hey'
}

function func(xyz) {
    someFunctionThatMutatesArray(arguments)
    console.log(xyz) // surprise
}

func(100)

票数 2
EN

Stack Overflow用户

发布于 2021-07-07 09:48:43

如果Object.keys(arguments).length是一个对象,那么arguments也可以工作:

代码语言:javascript
运行
复制
let arguments = ['foo', 'bar', 'baz'];

console.log('Array', Object.keys(arguments).length);

arguments = { 1: 'foo', 2: 'bar', 3: 'baz' }

console.log('Object', Object.keys(arguments).length);

也就是说,如果输入值已知为数组( arguments是),那么使用Object.keys是绝对没有必要的。

票数 1
EN

Stack Overflow用户

发布于 2021-07-07 10:28:04

没有理由使用Object.keys(arguments).length来获取传递给函数的参数的计数。该值总是与arguments.length相同,因此充其量是多余的。

由于您有性能标记,我要补充的是,Object.keys().length可能会慢一些。然而,它也不太可能产生很大的整体影响。

代码语言:javascript
运行
复制
function test() {
  const keysLength = Object.keys(arguments).length;
  const argsLength = arguments.length;
  console.log( `keys: [${keysLength}] arguments: [${argsLength}] equal: [${keysLength === argsLength}]` );
}

test();
test(1);
test(1, 2);
test(1, 2, null);
test(1, 2, undefined, 4);
test(1, 2, undefined, 4, ["a", "b", "c"]);
test({foo: "hello", bar: "world"});
test({foo: "hello", bar: "world"});
代码语言:javascript
运行
复制
.as-console-wrapper { max-height: 100% !important; }

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68283649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档