MDN’s new design is in Beta! A sneak peek:

Obsolete since JSAPI 28
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.

Convert a JavaScript value to an integer type as specified by the ECMAScript standard.


JS_ValueToECMAInt32(JSContext *cx, jsval v, int32 *ip);

JS_ValueToECMAUint32(JSContext *cx, jsval v, uint32 *ip);

JS_ValueToUint16(JSContext *cx, jsval v, uint16 *ip);
Name Type Description
cx JSContext * The context in which to perform the conversion. Requires request. In a JS_THREADSAFE build, the caller must be in a request on this JSContext.
v jsval The JavaScript value to convert.
ip int32 * or uint32 * or int16 * Out parameter. On success, *ip receives the converted value.


JS_ValueToECMAInt32, JS_ValueToECMAUint32, and JS_ValueToUint16 convert a JavaScript value to various integer types as specified in the ECMAScript specification.

  • JS_ValueToECMAInt32 implements the ToInt32 operator specified in ECMA 262-3 §9.5.
  • JS_ValueToECMAUint32 implements the ToUint32 operator specified in ECMA 262-3 §9.6.
  • JS_ValueToUint16 implements the ToUint16 operator specified in ECMA 262-3 §9.7.

All three functions first convert v to a floating-point number as if by calling JS_ValueToNumber; NaN values are then converted to zero. If that succeeds, the result is then converted to the target integer type. This second conversion cannot fail.

On success, JS_ValueToECMAInt32 stores the converted value in *ip and returns JS_TRUE. On error or exception, it returns JS_FALSE, and the value left in *ip is undefined.

See Also

Document Tags and Contributors

 Contributors to this page: arai, fscholz, Jorend, Wesgarland, Dria, MMondor
 Last updated by: arai,