Please note, this is a STATIC archive of website from 03 Nov 2016, does not collect or store any user information, there is no "phishing" involved.


Obsolete since JSAPI 36
This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

This article covers features introduced in SpiderMonkey 1.8.5

Execute a compiled script with specified version.


JS_ExecuteScriptVersion(JSContext *cx, JSObject *obj, JSObject *scriptObj,
    jsval *rval, JSVersion version);
Name Type Description
cx JSContext * The context in which to execute the script. Requires request. In a JS_THREADSAFE build, the caller must be in a request on this JSContext.
obj JSObject *

The scope in which to execute the script. In the simplest cases, this should just be the embedding's global object.

obj must not be an array, an E4X XML object, a With object, or a proxy.

In ECMAScript terms, the script is executed in a new execution context, but that context is not initialized quite as described in any of the three cases in ECMA 262-3 §10.2. Instead:

  • The scope chain is initialized to contain obj, followed by its parent, then its parent's parent, etc. until NULL is reached.
  • Variable initialization is performed. If the JSOPTION_VAROBJFIX option is in effect (recommended), then the last object in the scope chain is used as the variable object. Otherwise obj is used.
  • The this value is obj.
script JSObject * The compiled script to execute.
rval jsval * Out parameter. On success, *rval receives the value from the last executed expression statement processed in the script.
version JSVersion Version for the script.


JS_ExecuteScript executes a previously-compiled script, script.

If the script executes successfully, *rval receives the value from the last executed expression statement processed in the script, and JS_ExecuteScript returns true. Otherwise it returns false, and the value left in *rval is unspecified.

To execute a script that has not been compiled, use JS::Evaluate instead.

See Also

Document Tags and Contributors

 Contributors to this page: arai, fscholz, Sheppy, markg
 Last updated by: arai,