Package Exports
- handle-arguments
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (handle-arguments) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
handle-arguments

Get separately non-callback arguments in
.arguments
and the last argument if it is-callback-function in.callback
. It also works like sliced, but returns object with.arguments
and.callback
properties.
Install
npm i handle-arguments --save
Usage
For more use-cases see the tests
const handleArguments = require('handle-arguments')
handleArguments
Get separately non-callback arguments in
.arguments
, and the last function if it is-callback-function in.callback
. Signature is like sliced, it works almost the same way, but returns object with.arguments
and.callback
properties.
Params
argz
{Array|Arguments}: Arguments object or array to eat.names
{Array|Number}: If array directly passed to is-callback-function, otherwise to sliced.index
{Number}: Passed directly to sliced ifnumber
.returns
{Object}
Example
var handle = require('handle-arguments')
function fixture () {
return handle(arguments)
}
function cb () {}
function noop () {}
console.log(fixture(1, 2, 3, 4).arguments) // => [1, 2, 3, 4]
console.log(fixture(1, 2, 3, 4).callback) // => false
console.log(fixture(1, 2, cb).arguments) // => [1, 2]
console.log(fixture(1, 2, cb).callback) // => [Function: cb]
console.log(fixture(1, 2, noop).arguments) // => [1, 2, noop]
console.log(fixture(1, 2, noop).callback) // => false
// treat functions named `noop` or `foo` as callback
function fn () {
return handle(arguments, ['foo', 'noop'])
}
console.log(fn(1, 2, 3, noop).arguments) // => [1, 2, 3]
console.log(fn(1, 2, 3, noop).callback) // => [Function: noop]
Instead of commonly used and wrong pattern
It is part of "Optiomization Killers" and needed very much, so we need correct pattern to reuse.
function fixture () {
var args = [].slice.call(arguments)
var len = args.length
var callback = args[len - 1]
if (typeof callback === 'function') {
args = args.slice(0, -1)
callback.apply(null, [null].concat(args))
}
return args
}
Related
- arr-includes: Return true if any of passed values exists in array. Using in-array. | homepage
- common-callback-names: List of common callback names - callback, cb, callback_, next, done. | homepage
- function-arguments: Get arguments of a function, useful for and used in dependency injectors.… more | homepage
- get-fn-name: Get function name with strictness and correctness in mind. Also works for… more | homepage
- is-async-function: Is function really asynchronous function? Trying to guess that based on check… more | homepage
- is-callback-function: Returns true if function is a callback. Checks its name is one… more | homepage
- parse-function: Parse a function, arrow function or string to object with name, args,… more | homepage
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
But before doing anything, please read the CONTRIBUTING.md guidelines.