在创建具有多个参数的JavaScript函数时,我总是面临这样的选择:传递参数列表与传递选项对象.
例如,我正在编写一个函数来将nodeList映射到数组:
function map(nodeList, callback, thisObject, fromIndex, toIndex){
...
}
Run Code Online (Sandbox Code Playgroud)
我可以改用它:
function map(options){
...
}
Run Code Online (Sandbox Code Playgroud)
options是一个对象:
options={
nodeList:...,
callback:...,
thisObject:...,
fromIndex:...,
toIndex:...
}
Run Code Online (Sandbox Code Playgroud)
推荐哪种方式?是否有何时使用其中一种?
[更新]似乎有一个共识支持选项对象,所以我想添加一个注释:在我的案例中我试图使用参数列表的一个原因是有一个与JavaScript一致的行为内置于array.map方法.
重点关注错误的处理方式:
有一种fs促进的风格:一个回调,其中第一个参数是错误(如果有的话),其余的是响应值.
令人困惑的核心库并不总是将错误传递给回调的第一个参数. http.get, 例如.
另一种风格是有两个回调(回调和错误回调).由http://howtonode.org/control-flow-part-ii推荐