Web/JavaScript/Reference/Global objects/Function/toString
The toString() method returns a string representing the source code of the function.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Syntax
function.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'); // TypeError
If the toString() method is called on built-in function objects or a function created by Function.prototype.bind, toString() returns a native function string which looks like
"function () {\n [native code]\n}"
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.
It's also possible to explicitly get the string representation of a function using the + operator:
function foo() { return 'bar' }
console.log(foo + ''); // "function foo() { return 'bar' }"
Examples
Comparing actual source code and toString results
| Function | Function.prototype.toString result |
|---|---|
function f(){}
|
"function f(){}"
|
class A { a(){} }
|
"class A { a(){} }"
|
function* g(){}
|
"function* g(){}"
|
a => a |
"a => a" |
({ a(){} }.a)
|
"a(){}"
|
({ *a(){} }.a)
|
"*a(){}"
|
({ [0](){} }[0])
|
"[0](){}"
|
Object.getOwnPropertyDescriptor({
get a(){}
}, "a").get
|
"get a(){}"
|
Object.getOwnPropertyDescriptor({
set a(x){}
}, "a").set
|
"set a(x){}"
|
Function.prototype.toString |
"function toString() { [native code] }"
|
(function f(){}.bind(0))
|
"function () { [native code] }"
|
Function("a", "b")
|
"function anonymous(a\n) {\nb\n}"
|
Specifications
| Specification |
|---|
| ECMAScript (ECMA-262)The definition of 'Function.prototype.toString' in that specification. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
toString
|
Chrome
Full support 1 |
Edge
Full support 12 |
Firefox
Full support 1 |
IE
Full support 5 |
Opera
Full support 3 |
Safari
Full support 1 |
WebView Android
Full support 1 |
Chrome Android
Full support 18 |
Firefox Android
Full support 4 |
Opera Android
Full support 10.1 |
Safari iOS
Full support 1 |
Samsung Internet Android
Full support 1.0 |
nodejs
Full support Yes |
Implements Function.prototype.toString revision
|
Chrome
No support No |
Edge
No support No |
Firefox
Full support 54 |
IE
No support No |
Opera
No support No |
Safari
No support No |
WebView Android
No support No |
Chrome Android
No support No |
Firefox Android
Full support 54 |
Opera Android
No support No |
Safari iOS
No support No |
Samsung Internet Android
No support No |
nodejs
No support No |
Legend
- Full support
- Full support
- No support
- No support
See also
Function.prototype.toString() by Mozilla Contributors is licensed under CC-BY-SA 2.5.