# reorderArguments > Create a function that invokes a provided function with reordered arguments.
## Usage ```javascript var reorderArguments = require( '@stdlib/utils/reorder-arguments' ); ``` #### reorderArguments( fcn, indices\[, thisArg] ) Returns a `function` that invokes a provided function with reordered `arguments`. ```javascript function foo( a, b ) { return [ a, b ]; } var bar = reorderArguments( foo, [ 1, 0 ] ); var out = bar( 1, 2 ); // returns [ 2, 1 ] ``` To set the `this` context when invoking the provided function, provide a `thisArg`. ```javascript function Foo() { this.x = 1; this.y = 2; } Foo.prototype.scale = function scale( a, b ) { return [ this.x*a, this.y*b ]; }; var ctx = { 'x': 10, 'y': 20 }; var foo = new Foo(); var bar = reorderArguments( foo.scale, [ 1, 0 ], ctx ); var out = bar( 1, 2 ); // returns [ 20, 20 ] ```
## Examples ```javascript var reorderArguments = require( '@stdlib/utils/reorder-arguments' ); function foo( a, b, c ) { return [ a, b, c ]; } var bar = reorderArguments( foo, [ 2, 0, 1 ] ); var out = foo( 1, 2, 3 ); // returns [ 1, 2, 3 ] out = bar( 1, 2, 3 ); // returns [ 3, 1, 2 ] ```