【发布时间】:2012-10-01 08:59:51
【问题描述】:
在创建具有多个参数的 JavaScript 函数时,我总是面临这样的选择:传递参数列表与传递选项对象。
例如,我正在编写一个将 nodeList 映射到数组的函数:
function map(nodeList, callback, thisObject, fromIndex, toIndex){
...
}
我可以改用这个:
function map(options){
...
}
其中 options 是一个对象:
options={
nodeList:...,
callback:...,
thisObject:...,
fromIndex:...,
toIndex:...
}
推荐的方式是哪一种?是否有关于何时使用一种与另一种的指南?
[更新] 似乎有一个支持选项对象的共识,所以我想添加一条评论:在我的案例中,我很想使用参数列表的一个原因是行为一致使用 JavaScript 内置的 array.map 方法。
【问题讨论】:
-
第二个选项给你命名参数,在我看来这是一件好事。
-
它们是可选参数还是必需参数?
-
@user1689607 在我的示例中,最后三个是可选的。
-
因为您的最后两个参数非常相似,如果用户只传递了一个或另一个,您将永远无法真正知道是哪一个。因此,您几乎需要命名参数。但我可以理解您希望维护一个类似于本机 API 的 API。
-
如果你的函数做了类似的事情,在原生 API 之后建模并不是一件坏事。这一切都归结为“是什么让代码最易读”。
Array.prototype.map有一个简单的 API,不应该让任何半经验的编码员感到困惑。
标签: javascript json function object arguments