Compatibility

njs is created in compliance with ECMAScript 5.1 (strict mode) with some ECMAScript 6 and later extensions. The compliance is still evolving.

Definitions of njs specific properties and methods not compliant with ECMAScript can be found in Reference. Definitions of njs properties and methods compliant with ECMAScript can be found in ECMAScript specification.

What is currently supported

  • Boolean values, numbers, strings, objects, arrays, functions, function constructors (0.3.6), and regular expressions
  • ES5.1 operators, ES7 exponentiation operators
  • ES5.1 statements: break, catch, continue, do while, else, finally, for, for in, if, return, switch, throw, try, var, while, labeled statements (0.2.8)
  • ES6 statements: let (0.6.0), const (0.6.0)
  • Math properties:
    • ES6: E, LN10, LN2, LOG10E, LOG2E, PI, SQRT1_2, SQRT2
  • Math methods:
    • ES6: abs, acos, acosh, asin, asinh, atan, atan2, atanh, cbrt, ceil, clz32, cos, cosh, exp, expm1, floor, fround, hypot, imul, log, log10, log1p, log2, max, min, pow, random, round, sign, sin, sinh, sqrt, tan, tanh, trunc
  • Number properties:
    • ES6: EPSILON, MAX_SAFE_INTEGER, MAX_VALUE, MIN_SAFE_INTEGER, MIN_VALUE, NEGATIVE_INFINITY, NaN, POSITIVE_INFINITY
  • Number methods:
    • ES6: isFinite, isInteger, isNaN, isSafeInteger, parseFloat, parseInt
  • Number prototype methods:
  • String methods:
    • ES5.1: fromCharCode
    • ES6: fromCodePoint
  • String prototype methods:
    • ES5.1: charAt, concat, indexOf, lastIndexOf, match, replace, search, slice, split, substr, substring, toLowerCase, trim, toUpperCase
    • ES6: codePointAt, endsWith, includes, repeat, startsWith
    • ES8: padEnd, padStart
    • ES9: trimEnd (0.3.4), trimStart (0.3.4)
    • non-standard: bytesFrom (0.2.3), fromBytes, fromUTF8, toBytes, toUTF8
  • Object methods:
    • ES5.1: create (support without properties list), defineProperties (accessor descriptors support since 0.3.3), defineProperty (accessor descriptors support since 0.3.3), freeze, getOwnPropertyDescriptor, getOwnPropertyDescriptors (0.3.1), getOwnPropertyNames (0.3.1), getPrototypeOf, isExtensible, isFrozen, isSealed, keys, preventExtensions, seal
    • ES6: assign (0.3.7)
    • ES8: entries (0.2.7), values (0.2.7)
  • Object prototype methods:
    • ES5.1: hasOwnProperty, isPrototypeOf, (0.3.0), propertyIsEnumerable, toString, valueOf
    • ES6: is (0.3.8), setPrototypeOf (0.3.8)
  • Array methods:
    • ES5.1: isArray
    • ES6: of
  • Array prototype methods:
    • ES5.1: concat, every, filter, forEach, indexOf, join, lastIndexOf, map, pop, push, reduce, reduceRight, reverse, shift, slice, some, sort, splice, unshift
    • ES6: copyWithin (0.3.7), fill, find, findIndex
    • ES7: includes
  • ArrayBuffer methods (0.3.8):
    • ES6: isView
  • ArrayBuffer prototype methods (0.3.8):
    • ES6: slice
  • Typed-array constructors (0.3.8):
    • ES6: Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array
  • Typed-array prototype methods (0.3.8):
  • Buffer methods (0.4.4):
  • Buffer prototype methods: (0.4.4):
  • Promise methods (0.3.8):
    • ES6: reject, resolve
  • Promise prototype methods (0.3.8):
    • ES6: catch, finally, then
  • Function prototype methods:
    • ES5.1: apply, bind, call
  • RegExp prototype accessor properties:
    • flags (0.6.0), global, ignoreCase, multiline, source, sticky (0.6.0)
  • RegExp prototype methods:
    • [@@replace] (0.4.2), [@@split] (0.6.0)
    • ES5.1: exec, test, toString
  • RegExp instance properties:
    • lastIndex
  • RegExp ES9 named capture groups (0.3.2)
  • DataView prototype methods (0.4.4):
    • ES6: getFloat32, getFloat64, getInt16, getInt32, getInt8, getUint16, getUint32, getUint8, setFloat32, setFloat64, setInt16, setInt32, setInt8, setUint16, setUint32, setUint8
  • Date methods:
    • ES5.1: now, parse, UTC
  • Date prototype methods:
    • ES5.1: getDate, getDay, getFullYear, getHours, getMilliseconds, getMinutes, getMonth, getSeconds, getTime, getTimezoneOffset, getUTCDate, getUTCDay, getUTCFullYear, getUTCHours, getUTCMilliseconds, getUTCMinutes, getUTCMonth, getUTCSeconds, toDateString, toISOString, toLocaleDateString, toLocaleString, toLocaleTimeString, toTimeString, toUTCString, setDate, setFullYear, setHours, setMinutes, setMilliseconds, setMonth, setSeconds, setTime, setUTCDate, setUTCFullYear, setUTCHours, setUTCMilliseconds, setUTCMinutes, setUTCMonth, setUTCSeconds
  • JSON methods:
    • ES5.1: parse stringify
  • ES5.1 arguments object (0.2.5)
  • ES6 rest parameters syntax (without destructuring support) (0.2.7)
  • ES5.1 global functions: decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, isFinite, isNaN, parseFloat, parseInt
  • Error objects: Error, EvalError, InternalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError
  • clearTimeout and setTimeout functions (0.2.0)
  • File system methods: fs.accessSync (0.3.9), fs.appendFileSync, fs.mkdirSync (0.4.2), fs.readdirSync (0.4.2), fs.readFileSync, fs.realpathSync (0.3.9), fs.renameSync (0.3.4), fs.rmdirSync (0.4.2), fs.symlinkSync (0.3.9), fs.unlinkSync (0.3.9), fs.writeFileSync
  • fs.promises API (0.3.9), asynchronous version of file system methods.
  • Crypto methods (0.2.0): crypto.createHash, crypto.createHmac
  • Query String methods (0.4.3): querystring.decode, querystring.encode, querystring.escape, querystring.parse, querystring.stringify, querystring.unescape
  • TextDecoder methods (0.4.3): encoding, fatal, ignoreBOM, decode
  • TextEncoder methods (0.4.3): encode, encodeInto
  • ES6 modules support: default export and default import statements (0.3.0)
  • ES6 arrow functions (0.3.1)
  • Template literals: multiline strings, expression interpolation, nesting templates (0.3.2)
  • Global objects (0.3.3):

© 2002-2021 Igor Sysoev
© 2011-2021 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/njs/compatibility.html