function2string

Return a string representing the source code of a provided function.

Usage

var function2string = require( '@stdlib/function/to-string' );

function2string( fcn )

Returns a string representing the source code of a provided function.

function add( x, y ) {
    return x + y;
}

var str = function2string( add );
// e.g., returns 'function add( x, y ) {\n    return x + y;\n}'

Notes

  • If called on built-in functions, functions created by Function.prototype.bind(), or other non-JavaScript functions, the function returns a "native" function string similar to the following:

    "function foo() { [native code] }"
    

    For intrinsic object methods and functions, foo is the initial name of the function.

  • If called on a function created by the Function constructor, the function returns the source code of a synthesized function declaration having the name "anonymous" and using the provided parameters and function body.

  • Starting in ES2018, the ECMAScript specification requires that the returned string contain the exact same source code as it was declared, including any whitespace and/or comments. If the host is unable to access the source code, the specification requires that the returned string be the native function string.

Examples

var ndarray = require( '@stdlib/ndarray/ctor' );
var erf = require( '@stdlib/math/base/special/erf' );
var daxpy = require( '@stdlib/blas/base/daxpy' );
var kebabcase = require( '@stdlib/string/kebabcase' );
var randu = require( '@stdlib/random/base/randu' );
var format = require( '@stdlib/string/format' );
var function2string = require( '@stdlib/function/to-string' );

var fcns = [
    [ 'ndarray', ndarray ],
    [ 'erf', erf ],
    [ 'daxpy', daxpy ],
    [ 'kebabcase', kebabcase ],
    [ 'randu', randu ],
    [ 'format', format ],
    [ 'function2string', function2string ]
];

var i;
for ( i = 0; i < fcns.length; i++ ) {
    console.log( format( 'Function: %s\n\n%s\n', fcns[ i ][ 0 ], function2string( fcns[ i ][ 1 ] ) ) );
}
Did you find this page helpful?