Function.prototype.toString()
The toString()
method returns a string representing the source code of the specified Function
.
Syntax
toString()
Return value
A string representing the source code of the function.
Description
The Function
object overrides the toString()
method
inherited from Object
; it does not inherit
Object.prototype.toString()
. For user-defined Function
objects, the toString
method returns a string containing the source text
segment which was used to define the function.
JavaScript calls the toString
method automatically when a
Function
is to be represented as a text value, e.g. when a function is
concatenated with a string.
The toString()
method will throw a TypeError
exception
("Function.prototype.toString called on incompatible object"), if its
this
value object is not a Function
object.
Function.prototype.toString.call('foo'); // throws TypeError
If the toString()
method is called on built-in function objects, a
function created by Function.prototype.bind()
, or
other non-JavaScript functions, then toString()
returns a
native function string which looks like
"function someName() { [native code] }"
For intrinsic object methods and functions, someName
is the initial name of the function; otherwise its content may be implementation-defined, but will always be in property name syntax, like [1 + 1]
, someName
, or 1
.
Note: This means using
eval()
on native function strings is a guaranteed syntax error.
If the toString()
method is called on a function created by the Function
constructor, toString()
returns the source code of a synthesized function declaration named "anonymous" using the provided parameters and function body. For example, Function("a", "b", "return a + b").toString()
will return:
"function anonymous(a,b\n) {\nreturn a + b\n}"
Since ES2018, the spec requires the return value of toString()
to be the exact same source code as it was declared, including any whitespace and/or comments — or, if the host doesn't have the source code available for some reason, requires returning a native function string. Support for this revised behavior can be found in the compatibility table.