javascript - 在函数中使用参数对象

标签 javascript object arguments

为什么 foo 函数可以正常工作。

function foo (a,b) {
  return arguments.length;
}

但是,即使我在函数中传递了参数,boo 函数返回的 undefined 也不是函数。

function boo (a,b) {
  return arguments.slice(0);
}

最佳答案

arguments 不是数组,而是类数组对象。许多数组方法适用于类似数组的对象,因为它们需要一个具有数字属性和 length 属性(例如 arguments)的对象。您可以通过使用 call 并将对象作为 this 值传递来使用内置函数:

var args = Array.prototype.slice.call(arguments);
//^ args is a real array now

这也适用于其他方法,例如 reduce:

function sum(/*...args*/) {
  return [].reduce.call(arguments, function(x, y){return x + y})
}

关于javascript - 在函数中使用参数对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27697054/

相关文章:

javascript - 如何获取 D3.js 饼图以从 DOM 动态呈现数据

javascript - 为什么这对我不起作用? [元素] [类别] {样式}

javascript - 更改嵌套对象的父子相关 ID

ios - 我可以为 UIButton 传递带有 @selector 的数组参数吗?

javascript - 当通过书签插入时,jquery 在某些站点中表现异常

javascript - 通过 Post 的跨站 HTTP

Javascript:TypeError:...不是构造函数

JavaScript:从父类(super class)实例内部创建子类

php - 想通过php文件传递bash文件中的参数

c++ - 如何使用 Qt 将参数从 QML View 发送到模型?